首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止图例在R2017a和更新中更新?

如何防止图例在R2017a和更新中更新?
EN

Stack Overflow用户
提问于 2019-08-04 04:08:51
回答 1查看 341关注 0票数 2

由于MATLAB R2017a,图形图例自动更新时,添加一个图形到轴。以前,人们可以这样做:

代码语言:javascript
复制
data = randn(100,4);
plot(data)
legend('line1','line2','line3','line4')
hold on
plot([1,100],[0,0],'k-')

用图例绘制四条数据线,然后为y=0添加一条黑线。但是,由于R2017a,这将导致将黑线添加到图例中,其名称为"data1“。

如何防止将这一行添加到图例中,从而使代码的行为与MATLAB的旧版本中的代码相同?

到目前为止,我在堆栈溢出上找到的唯一解决方案是添加图例项后移除它。。语法不太好:

代码语言:javascript
复制
h = plot([1,100],[0,0],'k-'); % keep a handle to the added line
set(get(get(h,'Annotation'),'LegendInformation'),'IconDisplayStyle','off');
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-04 04:08:51

发布说明的MATLAB R2017a 提到这一变化,并提供了4种不同的方式处理的情况。这两种方法最容易放到现有代码中:

1:在添加黑线之前,关闭图例的自动更新。这可以在创建时完成:

代码语言:javascript
复制
legend({'line1','line2','line3','line4'}, 'AutoUpdate','off')

或其后:

代码语言:javascript
复制
h = findobj(gcf,'type','legend');
set(h, 'AutoUpdate','off')

还可以更改所有未来传说的默认值:

代码语言:javascript
复制
set(groot,'defaultLegendAutoUpdate','off')

2:关闭不希望添加到图例中的黑线的句柄可见性:

代码语言:javascript
复制
plot([1,100],[0,0],'k-', 'HandleVisibility','off')

这里还显示了IconDisplayStyle方法。但是,他们使用了点表示法,这使得语法更加漂亮:

代码语言:javascript
复制
h = plot([1,100],[0,0],'k-'); % keep a handle to the added line
h.Annotation.LegendInformation.IconDisplayStyle = 'off';
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57343725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档