添加图例 matlab 图

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(c,d),只有一行图例显示 'c on d',但我想有两行 'a on b' 和 'c on d')

那么如何在不覆盖的情况下向图例添加内容?

如果您要经常这样做,最好将图例标签导出为函数的输出参数,然后连接它们并在函数外部调用 legend

如果这只是一个 hack,那么在您的函数中,您可以查看轴手柄并将图例条目拉出。有一个类似的问题 here 可以做到这一点。

另一种可能性是使用 MATLAB 的 dynamic legend(未记录 so-well)功能。在您的情况下,不是将图例标题传递给 legend 函数,而是需要将它们用作 plot 函数的输入参数:

plot(x, y, 'DisplayName', 'caption');

然后使用以下语法添加图例:

lh = legend('-DynamicLegend');
set(lh, 'Box', 'off');

但是,如果您要尽可能快地在同一个绘图上渲染大量图形,我不建议使用这种方法,例如在一个循环中。在这些情况下,动态图例可能会对性能造成重大影响。