添加图例 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');
但是,如果您要尽可能快地在同一个绘图上渲染大量图形,我不建议使用这种方法,例如在一个循环中。在这些情况下,动态图例可能会对性能造成重大影响。
我有一个 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');
但是,如果您要尽可能快地在同一个绘图上渲染大量图形,我不建议使用这种方法,例如在一个循环中。在这些情况下,动态图例可能会对性能造成重大影响。