【发布时间】:2016-07-13 13:24:33
【问题描述】:
我正在 Matlab 中绘制一个图形。我在 while 循环中执行此操作,并且我正在使用该图来可视化循环期间发生的事情。
对于每个 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) 使用不同的颜色,同时更新图例。
我想不通,谁能帮帮我?
谢谢!
【问题讨论】:
-
您使用的是哪个版本的 MATLAB?您是否希望
CPcrit2线段全部为红色并且仅在CPdiff2线段上更改颜色? -
嗨@Dan,CPcrit2 可能一直是红色的,CPdiff2 需要改变颜色,因为它在每次迭代中变化最大。目前,我正在运行 Matlab 8.2.0.701 (R2013b)
-
pre 2014b,而不是
hold on尝试hold all -
@Dan,现在工作正常,所有线条颜色都在变化。但是,图例并未相应扩展,因为它仅显示了最后一次迭代和相关的 AOA。你知道如何解决这个问题吗?
-
在你的循环之后检查
legendStrs的大小和类型,你也应该只调用一次legend,它应该在循环之外