Changing color and style using a loop
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hi, I want to plot 31 curves with varying colors and styles. My code is as follows:
colorspec = colormap(jet(8));
set(groot,'defaultAxesColorOrder',colorspec,'defaultAxesLineStyleOrder','-|--|:|-.');
for k1 = 1:31
semilogx(All_112(:,1), All_112(:,k1+1), 'Linewidth',2);
legendInfo{k1} = ['Day = ' num2str(k1)];
hold all
end
legend(legendInfo);
I am getting all the curves but Matlab plots one style first with all the 8 colors and then goes to the next. Is there any way to modify the code such that Matlab uses each color in the ColorOrder with all the line styles in LineStyleOrder and then jumps to the next color?
Thanks.
0 commentaires
Réponse acceptée
Walter Roberson
le 8 Fév 2018
"Is there any way to modify the code such that Matlab uses each color in the ColorOrder with all the line styles in LineStyleOrder and then jumps to the next color?"
No. You cannot use the default color and style mechanisms for this. You will need to do something like,
colorspec = colormap(jet(8));
styles = {'-', '--', ':', '-.'};
ncolor = size(colorspec,1);
nstyles = length(styles);
for k1 = 1 : 31
coloridx = 1 + floor((k1-1)/nstyles);
styleidx = 1 + mod(k1-1, nstyles);
semilogx(All_112(:,1), All_112(:,k1+1), styles{styleidx}, 'Linewidth', 2, 'Color', colorspec(coloridx,:));
legendInfo{k1} = ['Day = ' num2str(k1)];
hold all
end
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur 2-D and 3-D Plots dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!