每次迭代后添加到图例

Léo*_* 준영 15 matlab legend

我跑

loglog(x,y);
legend('First script');
Run Code Online (Sandbox Code Playgroud)

从第一个脚本.然后,hold on;.我运行类似的第二个脚本.我正确地看到了两张图,但只看到了最初的图例.我想从不同的脚本增加图例.

如何从单个脚本添加到图例?

Luc*_*II. 20

另一种可行的方法是将其称为'DisplayName':

hold all
for ind=1:3
x=[0:0.1:10];
plot(x, sin(x)+ind, 'DisplayName',['sin + ' num2str(ind)]);
end
legend(gca,'show')
Run Code Online (Sandbox Code Playgroud)

从任何地方到任何轴绘制时只需使用此属性:)

还有更多可能的事情,比如动态传奇!

有关更多信息,请参阅:来自未记录的matlab的动态图例

编辑

每次运行脚本后都必须更新图例.您可以使用动态图例或仅通过图例('关闭')执行此操作; 图例("节目")


cha*_*pjc 5

处理此问题的最简单方法是在创建图例时保存图例的句柄,然后您可以使用包含其他系列的新图例更新图表,删除图例并创建一个新图例:

legendStrings = {'First script'};
h_legend = legend(legendStrings{:});
% ... computations, hold on and additional plot on axis
delete(h_legend);
legendStrings{end+1} = 'Second script';
h_legend = legend(legendStrings{:});
% rinse and repeat...
Run Code Online (Sandbox Code Playgroud)

通常使用图形对象,例如文本框,我会说只是通过句柄重用对象(不要delete).但是,如果您更新图例而不是替换图例,则必须担心的不仅仅是字符串.zroth引用MathWorks解决方案实际上似乎解决了这种方法!

作为替代delete和创建新的,您还可以打开和关闭图例,legend('off'); legend('show');作为Eugenio的评论建议的答案.