[英]add legend matlab plot
我有一个matlab函数myfunction(var1,var2)
,它给了我一个带有图例的图。 我想在一张图中使用此函数生成更多图。 到目前为止,这是有效的,即在一张图中的2个图具有:
myfunction(a,b)
hold on
myfunction(c,d)
hold off
这里的问题是为每个图生成的图例具有:
legend(sprintf('%s%s',var1,' on ',var2))
legend('boxoff')
仅在myfunction
的最后一个实例中myfunction
(在本例中为myfunction(c,d)
,在图例中只有一行显示“ c on d”,但我想在两行中使用“ a on” b'和'c on d')
那么如何在不覆盖图例的情况下添加图例呢?
如果要执行很多操作,最好将图例标签导出为函数的输出参数,然后将它们连接起来并在函数外部调用legend
。
如果这只是hack,那么在函数内部,您可以查看轴手柄并拉出图例条目。 有一个类似的问题在这里是这样做的。
另一种可能性是使用MATLAB的动态图例 (未充分记录)功能。 在您的情况下,您无需将图例标题传递给legend
函数,而需要将它们用作plot
函数的输入参数:
plot(x, y, 'DisplayName', 'caption');
然后使用以下语法添加图例:
lh = legend('-DynamicLegend');
set(lh, 'Box', 'off');
但是,如果您有大量图形要尽可能快地(例如在循环中)在同一图上呈现,我不会建议这种方法。 在这些情况下,动态图例可能会严重影响性能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.