How can I give different colours not randomly to large number of lines in one plot?
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
The syntax in the code col=['r' 'y' 'b' 'g' 'k' 'c' 'm' 'k' '#D95319']; is related to the color of the lines in the plot which works well for 9 lines in the plot. But actually I want to plot 20 lines. How can I write this syntax for large number of colors? In fact, I don't want to give them random colors but in order.
clc
clear all
load EC.mat
for n=4:1:9;
filename = sprintf('data_%d.mat',n);
load(filename)
E(n-3,:)=EC(1,:);
d(n-3,:)=dep(9,:);
end
hold on ; % MOVE THIS OUTSIDE THE LOOP
col=['r' 'y' 'b' 'g' 'k' 'c' 'm' 'k' '#D95319']; % MOVE THIS OUTSIDE THE LOOP
[m,~]=size(d);
lineHandles = gobjects(1,m); % ADD THIS
for i=1:m
PP(i,:)=plot(d(i,:),E(i,:),'ok','LineWidth',2)% original data
P1(i,:) = polyfit(d(i,:),E(i,:),2);%%2 indicates the quadratic
% x_values = min(in_(1,:)): 0.001:max(x_axis(1,:));
Y= polyval(P1(i,:),d(i,:));
h1 = plot(d(i,:),Y,'*g','LineWidth',1) % fitted
Y1 = polyval(P1(i,:),d(i,:));
R1 = corrcoef(Y1,d(i,:));
%%lsline
ss = min(d(i,:)) : 0.001: max(d(i,:));
Y2 = polyval(P1(i,:),ss);
lineHandles(i) = plot(ss,Y2,'color',col(i),'LineWidth',1); % STORE HANDLE
end
% MOVE THIS OUTSIDE THE LOOP
title('Polynomial fitting','FontSize',16,'FontWeight','normal')
xlabel('Depolarisation ratio \delta_{in}','FontSize',12,'FontWeight','normal');
ylabel('Extinction coefficient \alpha{(m^-^1)}','FontSize',12,'FontWeight','normal');
ylim([0.005 0.03])
% SUPPLY HANDLES, DEFINE EACH POLY CURVE LINE
legend([PP(end,:), h1, lineHandles],...
["Actual data","Data fit",compose('PolyCurve %d\\mum',(4:m+7))],'location','Northwest')
1 Kommentar
Walter Roberson
am 10 Feb. 2021
Bearbeitet: Walter Roberson
am 10 Feb. 2021
col=['r' 'y' 'b' 'g' 'k' 'c' 'm' 'k' '#D95319']; % MOVE THIS OUTSIDE THE LOOP
needs to be either
col={'r' 'y' 'b' 'g' 'k' 'c' 'm' 'k' '#D95319'}; % MOVE THIS OUTSIDE THE LOOP
or
col=["r" "y" "b" "g" "k" "c" "m" "k" "#D95319"]; % MOVE THIS OUTSIDE THE LOOP
If you use the {} form then you need to use col{i} instead of col(i)
Antworten (1)
Iuliu Ardelean
am 10 Feb. 2021
Bearbeitet: Iuliu Ardelean
am 10 Feb. 2021
Let's say you have 7 colours:
x = rand(7, 100);
y = rand(7, 100);
col = parula(7); % replace col=['r', 'y', 'b'] with col=parula(ColoursNumber)
figure
hold on
for i = 1:7
plot(x(i,:),y(i,:), 'Color', col(i,:));
end
hold off
legend
If you don't like parula, you can try different ones from this list:
Image should look like this:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/515457/image.png)
0 Kommentare
Siehe auch
Kategorien
Mehr zu Debugging and Analysis 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!