Changing color and style using a loop

조회 수: 2 (최근 30일)
Hems
Hems 2018년 2월 8일
댓글: Hems 2018년 2월 9일
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.

채택된 답변

Walter Roberson
Walter Roberson 2018년 2월 8일
"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
  댓글 수: 1
Hems
Hems 2018년 2월 9일
Thank you very much Walter.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Annotations에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by