MATLAB:在while循环中改变行的颜色

时间:2016-07-13 13:24:34

标签: matlab plot

我在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都会发生变化,CPdiff2CPcrit2上的新数据变为可用。因此,我想用颜色hold on绘制旧数据,然后在同一图中绘制第二次while循环迭代的数据,但plot(Span_Loc,CPdiff2)的颜色不同,同时还更新图例

我无法弄清楚,有人可以帮助我吗?

谢谢!

2 个答案:

答案 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

enter image description here

如果您事先无法知道您的迭代次数,我建议您循环使用色彩图。

这样做的一个好方法如下:

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

enter image description here