How to use loop for plotting multiple plots and legend?

34 次查看(过去 30 天)
I want to plots mulplits plots on and I have single x time axis and temp1 upto temp20 similalry so how to use loop here for labeling the legend and plots instead of writing for 20 times.
t=readtable ()
plot (t.time,t.temp1, .t.time,temp20)
legend ("Temp1",....,"Temp2")

采纳的回答

Dyuman Joshi
Dyuman Joshi 2022-8-25
What you want to do is possible but quite more tedious than what you did.
y=readtable('test file.xlsx');
z=cell(1,20);
for i=1:20
z{i}=sprintf('temp%d', i); %collecting legend labels in a cell array
plot(table2array(y(:,'Time')),table2array(y(:,z{i})))
hold on
end
hold off
legend(z,'Location', 'best','FontSize',6 , 'NumColumns',4)

更多回答(1 个)

Arshey Dhangekar
Arshey Dhangekar 2022-9-1

How to vary colors because it's difficult to identify the parameters. Any suggestions

  3 个评论
Arshey Dhangekar
Arshey Dhangekar 2022-9-11
Temp 1 and temp 15 have same plot colors and similarly other plots also so it's hard differentiate the plots. So how to vary colors so that every temp1 to temp 20 will have different color or shade
Dyuman Joshi
Dyuman Joshi 2022-9-12
You can use rand() (which I guess is the default option as well) to obtain different colors. Though there's a chance that 2 or more colors seem similar, for eg -
x=0:0.01:10;
for i=1:20
plot(x,sin(x).^i,'Color',rand(1,3))
z{i}=sprintf('sin^{%d} x', i);
hold on
end
legend(z,'Location', 'best','FontSize',6 , 'NumColumns',4)
%11-13, 16-18 look similar
Or you can define particular array for it, to distinguish better in between colors.
A random example -
y = (dec2base(0:19,3)-'0')/2;
figure
for i=1:20
plot(x,cos(x).^i,'Color',y(i,:))
z{i}=sprintf('cos^{%d} x', i);
hold on
end
legend(z,'Location', 'best','FontSize',6 , 'NumColumns',4)

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Legend 的更多信息

标签

产品


版本

R2022a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by