How can I plot multiple lines in different colors on a single plot using loops?
873 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
JoelB
am 15 Sep. 2018
Kommentiert: Qian
am 7 Jan. 2024
I am evaluating and plotting a function of time using at multiple times using a for loop and I want each line to plot a different color. My code plots all the lines the same color. At first my legend was not matching the lines so I am trying to plot the lines with defined colors and then change my legend accordingly. If anyone knows why the legends colors are out of order with the plot that would also help!
Cs is the function that varies with time.
Can someone suggest another way of doing this?
line_color = ['b' 'g' 'y' 'c' 'm' 'r'];
for i=1:length(t);
figure(1)
title('Carbon Sequestration in Indoor Environment vs. SA/V Ratio','FontSize',10)
ylabel('Carbon Sequestration (kg CO2)')
xlabel('SA/V Ratio')
legend('25 years','50 years','75 years','100 years','125 years','150 years','AutoUpdate','off')
hold on
plot(SAV_ratio,Cs,line_color(i),'LineWidth',2)
end
Thanks
3 Kommentare
Image Analyst
am 15 Sep. 2018
Joel, did you even see my answer below in the official "Answer" section of this page?
Akzeptierte Antwort
Abby Skofield
am 20 Sep. 2023
Starting in R2019b, use the colororder command to specify a palette of colors for individual plots to use. You can pass in color names like "b" and "blue" directly to the colororder command if those are the desired colors.
x = linspace(0,4*pi,100);
y = sin(x)+(1:6)';
plot(x,y,'LineWidth',2)
line_color = ["b" "g" "y" "c" "m" "r"];
colororder(line_color)
Starting in R2023b, there are several predefined, named palettes that can be used with the colororder command, for example'reef', 'meadow' and 'dye'.
clf
t = tiledlayout('horizontal');
ax1 = nexttile;
plot(ax1,x,y,LineWidth = 2)
colororder(ax1,'reef')
title('reef')
ax2 = nexttile;
plot(ax2,x,y,LineWidth = 2)
colororder(ax2,'meadow')
title('meadow')
ax3 = nexttile;
plot(ax3,x,y,LineWidth = 2)
colororder(ax3,'dye')
title('dye')
Weitere Antworten (2)
Image Analyst
am 15 Sep. 2018
Try this. Adapt as needed for your signal.
line_color = ['b' 'g' 'y' 'c' 'm' 'r'];
t = 1 : 100;
SAV_ratio = t;
ca = cell(1, length(line_color));
period = 100;
for k = 1 : length(line_color)
ca{k} = sprintf('%d years', k*25);
hold on
% Get new values.
Cs = sin(2*pi*t / (period * k));
plot(SAV_ratio, Cs,'-', 'Color', line_color(k),'LineWidth',2)
grid on;
end
title('Carbon Sequestration in Indoor Environment vs. SA/V Ratio','FontSize',16)
ylabel('Carbon Sequestration (kg CO2)')
xlabel('SA/V Ratio')
ax = gca;
ax.XAxisLocation = 'origin';
legend(ca, 'Location', 'southwest')
0 Kommentare
Ivan Popov
am 16 Jun. 2021
Bearbeitet: Ivan Popov
am 16 Jun. 2021
You have to use colororder(Colormap Name) with the desired color map. Then with one plot, you can use all desired colors in the appropriate order. Actually one can change colororder after data is plotted.
Example:
colororder(hsv(x));
plot(AnyMatrix(:,1:x));
1 Kommentar
Adam Danz
am 14 Jun. 2022
Siehe auch
Kategorien
Mehr zu Annotations finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!