我跑
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的动态图例
编辑
每次运行脚本后都必须更新图例.您可以使用动态图例或仅通过图例('关闭')执行此操作; 图例("节目")
处理此问题的最简单方法是在创建图例时保存图例的句柄,然后您可以使用包含其他系列的新图例更新图表,删除图例并创建一个新图例:
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的评论建议的答案.