由于MATLAB R2017a,图形图例自动更新时,添加一个图形到轴。以前,人们可以这样做:
data = randn(100,4);
plot(data)
legend('line1','line2','line3','line4')
hold on
plot([1,100],[0,0],'k-')用图例绘制四条数据线,然后为y=0添加一条黑线。但是,由于R2017a,这将导致将黑线添加到图例中,其名称为"data1“。
如何防止将这一行添加到图例中,从而使代码的行为与MATLAB的旧版本中的代码相同?
到目前为止,我在堆栈溢出上找到的唯一解决方案是添加图例项后移除它。。语法不太好:
h = plot([1,100],[0,0],'k-'); % keep a handle to the added line
set(get(get(h,'Annotation'),'LegendInformation'),'IconDisplayStyle','off');发布于 2019-08-04 04:08:51
发布说明的MATLAB R2017a 提到这一变化,并提供了4种不同的方式处理的情况。这两种方法最容易放到现有代码中:
1:在添加黑线之前,关闭图例的自动更新。这可以在创建时完成:
legend({'line1','line2','line3','line4'}, 'AutoUpdate','off')或其后:
h = findobj(gcf,'type','legend');
set(h, 'AutoUpdate','off')还可以更改所有未来传说的默认值:
set(groot,'defaultLegendAutoUpdate','off')2:关闭不希望添加到图例中的黑线的句柄可见性:
plot([1,100],[0,0],'k-', 'HandleVisibility','off')这里还显示了IconDisplayStyle方法。但是,他们使用了点表示法,这使得语法更加漂亮:
h = plot([1,100],[0,0],'k-'); % keep a handle to the added line
h.Annotation.LegendInformation.IconDisplayStyle = 'off';https://stackoverflow.com/questions/57343725
复制相似问题