Cri*_*ngo 2 matlab plot legend matlab-figure
自 MATLAB R2017a 起,当向坐标区添加绘图时,图例图例会自动更新。以前,人们可以这样做:
data = randn(100,4);
plot(data)
legend('line1','line2','line3','line4')
hold on
plot([1,100],[0,0],'k-')
Run Code Online (Sandbox Code Playgroud)
用图例绘制四条数据线,然后为 y=0 添加一条黑线。然而,从 R2017a 开始,这导致图例中添加了黑线,名称为“data1”。
如何防止将此行添加到图例中,以便代码的行为就像在旧版本 MATLAB 中一样?
到目前为止,我在 Stack Overflow 上找到的唯一解决方案是在添加图例项后将其删除。语法不太漂亮:
h = plot([1,100],[0,0],'k-'); % keep a handle to the added line
set(get(get(h,'Annotation'),'LegendInformation'),'IconDisplayStyle','off');
Run Code Online (Sandbox Code Playgroud)
MATLAB R2017a 的发行说明提到了这一更改,并提供了 4 种不同的处理这种情况的方法。这两种方法最容易放入现有代码中:
1:在添加黑线之前关闭图例的自动更新。这可以在创建时完成:
legend({'line1','line2','line3','line4'}, 'AutoUpdate','off')
Run Code Online (Sandbox Code Playgroud)
或之后:
h = findobj(gcf,'type','legend');
set(h, 'AutoUpdate','off')
Run Code Online (Sandbox Code Playgroud)
您还可以更改所有未来图例的默认值:
set(groot,'defaultLegendAutoUpdate','off')
Run Code Online (Sandbox Code Playgroud)
2:关闭您不想添加到图例中的黑线的手柄可见性:
plot([1,100],[0,0],'k-', 'HandleVisibility','off')
Run Code Online (Sandbox Code Playgroud)
IconDisplayStyle此处也显示了该方法。然而,它们使用点符号,这使得语法更漂亮一些:
h = plot([1,100],[0,0],'k-'); % keep a handle to the added line
h.Annotation.LegendInformation.IconDisplayStyle = 'off';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
493 次 |
| 最近记录: |