Kot*_*ots 8 matlab legend figure matlab-figure
我有一个 for i=1:15.在里面我生成一个变量d=1:0.01:10,它是x'x轴,基于此,我创建了一个连续函数F(d),它有2个唯一变量pitch和yaw.然后我使用不同的颜色在每次递归中使用cmap = hsv(15);.那么它是:
d=1:0.01:10;
cmap = hsv(15);
for i=1:15
pitch = unidrnd(10);
yaw = unidrnd(10);
for j=1:length(d)
F(j) = d(j)*3*pitch*yaw; %// some long calculation here
end
p1 = plot(d,F,'Linewidth', 1.0);
title ('blah blah')
set(p1, 'Color', cmap(i,:));
hold on;
legend (['pitch,yaw:', num2str(pitch) num2str(yaw)])
end
hold off;
Run Code Online (Sandbox Code Playgroud)
此代码更新每次递归中的唯一音高,偏航值(它们之间没有空格,因此它很有刺激性),但未能:
- 使用适当的颜色,如图所示.
- 保持上一次迭代的颜色和值
pitch,yaw.
cha*_*pjc 27
如图所示,可以使用"动态图例"在循环中向图例添加线条,如undocumentedmatlab.com所述.
想法是用以下legend命令替换命令:
legend('-DynamicLegend');
Run Code Online (Sandbox Code Playgroud)
然后plot使用DisplayName参数更新命令:
plot(d,F,'Linewidth',1.0,'DisplayName',sprintf('pitch,yaw: %d,%d',pitch,yaw));
然后添加到轴的绘图将添加到图例中:

如果半成品特征不是你的一杯茶,请使用DisplayName技巧并简单地legend关闭/打开.也就是说,而不是-DynamicLegend:
legend('off'); legend('show');
Run Code Online (Sandbox Code Playgroud)
甲不要么使用不同的变化DisplayName或-DynamicLegend是删除并重新创建与存储字符串数组的图例.
MathWorks推荐的官方解决方案,它抓住现有的图例线条手柄,并用这些手柄手动更新图例.与上面的动态图例解决方案相比,这非常痛苦:
% Get object handles
[LEGH,OBJH,OUTH,OUTM] = legend;
% Add object with new handle and new legend string to legend
legend([OUTH;p1],OUTM{:},sprintf('pitch,yaw: %d,%d',pitch,yaw))
Run Code Online (Sandbox Code Playgroud)