how can i plot many series of values in the same plot
5 次查看(过去 30 天)
显示 更早的评论
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 个评论
Star Strider
2023-8-26
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.)
采纳的回答
Star Strider
2023-8-26
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 个评论
更多回答(1 个)
Cris LaPierre
2023-8-26
编辑:Cris LaPierre
2023-8-26
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
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Resizing and Reshaping Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!