Changing color and style using a loop

12 views (last 30 days)
Hems
Hems on 8 Feb 2018
Commented: Hems on 9 Feb 2018
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.

Accepted Answer

Walter Roberson
Walter Roberson on 8 Feb 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

More Answers (0)

Community Treasure Hunt

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

Start Hunting!