Matlab:如何在不从绘图浏览器中删除的情况下抑制图例条目

3
可以通过执行h.HandleVisibility='off'h.Annotation.LegendInformation.IconDisplayStyle='off'来抑制线对象h的图例条目。但是,这两个操作也会防止曲线出现在Matlab的绘图浏览器用户界面中,因此无法交互地切换曲线的显示。
有没有办法抑制给定曲线的图例条目,同时又不影响在绘图浏览器用户界面中切换该曲线的显示?
2个回答

2
你还可以关闭句柄的可见性。这比设置每个图形的h1 = ... 要容易得多。
示例:
x1 = randperm(10);
y = randperm(10);
x2 = randperm(10);

plot(x1, y, '-', 'Color', 'black', 'HandleVisibility', 'off')
hold on
plot(x2, y, '-', 'Color', 'green', 'DisplayName', 'Put This In Legend')
lgd = legend;
set(lgd, 'Location', 'best')

1

MATLAB的legend函数接受一个可选参数,列出要包含在图例中的句柄:

figure, hold on
h1 = plot(1,1,'ro');
h2 = plot(1,2,'gx');
h3 = plot(2,1,'m*');
legend([h1,h3]);  % don't make a legend for h2.

谢谢。你知道这是唯一的解决方案吗?我正在循环中添加线对象,并根据条件设置句柄/图标可见性;因此,我可以使用该条件仅收集那些将出现在图例中的线条,在绘图构建后将该数组传递给legend(...) - user001
@user001:这是最方便的解决方案,也是我自己会使用的解决方案。你已经有了一个可行的解决方案,但并不方便。在你的情况下,将句柄收集到数组中是正确的方法。 - Cris Luengo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接