我在Matlab中绘制一个人物。我在while循环中执行此操作,并且我使用该图来可视化循环期间发生的情况。
对于每次循环迭代,我想更改线条颜色,以便轻松监视while循环中的更改。
目前,我必须遵循情节的代码:
AOAstr = num2str(AOA);
figure(2)
pl = plot(Span_Loc,CPcrit2,'r');
legendStrs = {'Critical |CPpeak-CPte|'};
set(pl,'linewidth',1.5);
hold on
plot(Span_Loc,CPdiff2)
legendStrs = [legendStrs, {strcat('Local |CPpeak-CPte|','-','AOA=',AOAstr)}];
title('Effective angle of attack')
xlabel('semi-span')
ylabel('|CPpeak-CPte|')
legend('boxon')
legend(legendStrs,'Location','SouthWest');
注意:while循环中的运行变量为AOA
,因此每次迭代时,AOA都会发生变化,CPdiff2
和CPcrit2
上的新数据变为可用。因此,我想用颜色hold on
绘制旧数据,然后在同一图中绘制第二次while循环迭代的数据,但plot(Span_Loc,CPdiff2)
的颜色不同,同时还更新图例
我无法弄清楚,有人可以帮助我吗?
谢谢!
答案 0 :(得分:1)
可以在plot()
中将颜色指定为RGB值([r,g,b])。 r,g,b的值应介于0和1之间。因此,您可以将颜色指定为循环变量AOA
的函数。
例如,您可以指定线条颜色
plot(Span_Loc,CPdiff2, 'color', [0, AOA/255, 0])
假设AOA
永远不会超过255。
答案 1 :(得分:0)
@Thanushan Balakrishnan的答案很好,但你可能希望对颜色等有更高的控制力。
在我看来,可视化这些的最佳方法是使用色彩图,因为它们不仅仅是一种颜色,而是一种很好的视觉颜色组合。
作为一个例子,这段代码每次都会比上一次迭代更高一点。向上意味着更大ii
x=1:100;
y=rand(1,100);
num_iter=90;
cmap=magma(num_iter); % I used my own colormap but you can use parula or something else
hold on
for ii=0:num_iter-1
plot(x,y+ii*0.1,'color',cmap(ii+1,:));
end
如果您事先无法知道您的迭代次数,我建议您循环使用色彩图。
这样做的一个好方法如下:
x=1:100;
y=rand(1,100);
num_iter=100;
cmap=magma(30); % notice, colormap is smaller
cmap=[cmap; flipud(magma(30))]; % make colormap go back to the first colro again
% now cmap is 60, but iterations are 100!
hold on
for ii=0:num_iter-1
plot(x,y+ii*0.1,'color',cmap(mod(ii,size(cmap,1))+1,:));
end