how can i plot many series of values in the same plot
    19 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    federico
 el 26 de Ag. de 2023
  
    
    
    
    
    Editada: Dyuman Joshi
      
      
 el 27 de Ag. de 2023
            i have a series of txt files which i need to use to make one single plot with all of them in it but this command seems not to work properly.
i'm kinda new to matlab so a friend tried to help me out with this one but i don't know how to make it work.
it gives me an error on the first line 
%% Import single I-V
clear, clc; close all; % clear variables and cmd window, close figures
% Import raw measurement .epr file
[FileName,FilePath] = uigetfile('*.txt','Choose a measurement');
File = [FilePath, FileName];
data = readmatrix(File,'Range','A1:B70','FileType','delimitedtext');
V = data(:,1);
I = data(:,2);
%% Plot single I-V
figure(1);
plot(V,I,'- .','DisplayName',FileName)
% semilogy(V,abs(I),'- .','DisplayName',FileName)
xlabel('Voltage (V)')
ylabel('Current (mA)')
axis tight
xline(0,'HandleVisibility','off')
yline(0,'HandleVisibility','off')
grid on
box on
legend('Location','northwest','FontSize',8,'Interpreter','None')
pbaspect([1.25 1 1])
%% Import all I-V
% Clear all variables, close all figures, clear command window
clear; close all; clc; 
% Navigate Current Folder to folder containing all files
% Get all .epr files in current directory
txt_files = dir('*.txt');
% Initialise empty cell array to store data
data = cell(0);
% Loop through each csv file to read data from specific rows and columns
for i = 1:numel(txt_files)
    data{i} = readmatrix(txt_files(i).name,'Range','A1:B70','FileType','delimitedtext');
end
%% Plot all I-V 
for i = 1:numel(txt_files)
    V = data{1, i}(:,1);
    I = data{1, i}(:,2);
    figure(1);
    plot(V,I,'- .','DisplayName',txt_files(i).name)
    % semilogy(V,abs(I),'- .','DisplayName',txt_files(i).name)
    hold on
end
hold off
xlabel('Voltage (V)')
ylabel('Current (mA)')
axis tight
%xline(0,'HandleVisibility','off')
%yline(0,'HandleVisibility','off')
grid on
box on
legend('Location','northwest','FontSize',8,'Interpreter','None')
pbaspect([1.25 1 1])
2 comentarios
  Star Strider
      
      
 el 26 de Ag. de 2023
				What is the error? 
It works for me (with an arbitrary file) through ‘figure(1)’.  (I don’t have the other files so I didn’t run the rest of it.)  
Respuesta aceptada
  Star Strider
      
      
 el 26 de Ag. de 2023
        Looking a bit more carefully at your posted code, I believe the problem is that you are creating a new figure in each loop iteration.  
Try this instead: 
figure(1);
for i = 1:numel(txt_files)
    V = data{1, i}(:,1);
    I = data{1, i}(:,2);
    plot(V,I,'- .','DisplayName',txt_files(i).name)
    % semilogy(V,abs(I),'- .','DisplayName',txt_files(i).name)
    hold on
end
I could not run the code, so I did not see that before.  
.
6 comentarios
  Star Strider
      
      
 el 26 de Ag. de 2023
				
      Movida: Cris LaPierre
    
      
 el 27 de Ag. de 2023
  
			As always, (our) pleasure!  
Más respuestas (1)
  Cris LaPierre
    
      
 el 26 de Ag. de 2023
        
      Editada: Cris LaPierre
    
      
 el 26 de Ag. de 2023
  
      If you want multiple lines to appear with a single plot command, you need to be plotting a matrix. Each column of data is treated as a series.
X = 1:10;
% 3 columns so 3 lines
Y = rand(10,3);
plot(X,Y)
You can also use multple plot commands combined with a 'hold on'. Without it, each plot command replaces the previous plot.
plot(X,Y(:,1))
hold on
plot(X,Y(:,2))
plot(X,Y(:,3))
hold off
Ver también
Categorías
				Más información sobre Desktop en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!




