Changing color and style using a loop

3 Ansichten (letzte 30 Tage)
Hems
Hems am 8 Feb. 2018
Kommentiert: Hems am 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.

Akzeptierte Antwort

Walter Roberson
Walter Roberson am 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

Weitere Antworten (0)

Kategorien

Mehr zu Graphics Object Properties 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!

Translated by