我有一个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)
,在d'上只有一行图例说明了' c,但是我希望在b'和' c上有两行' c
那么如何在不覆盖传奇的情况下为传奇添加内容呢?
答案 0 :(得分:0)
如果您要做很多事情,最好将图例标签导出为函数的输出参数,然后连接它们并在函数外部调用legend
。
如果它只是一个黑客攻击,那么你可以在你的功能中查看轴手柄并拉出图例条目。还有类似的问题here。
答案 1 :(得分:0)
另一种可能性是使用MATLAB的dynamic legend(没有很好记录)功能。在您的情况下,您不必将图例标题传递给legend
函数,而是需要将它们用作plot
函数的输入参数:
plot(x, y, 'DisplayName', 'caption');
然后使用以下语法添加图例:
lh = legend('-DynamicLegend');
set(lh, 'Box', 'off');
但是,如果你要在同一个地块上尽可能快地渲染大量的图形,我不会建议这种方法。在一个循环中。在这些情况下,动态图例可能会导致显着的性能损失。