我需要阻止特定的绘图条目显示在Matlab图例上。
示例:
% x and y are any plot data
for i=1:5
plot(x,y);
plot(x2,y2,'PleaseNoLegend!'); % I need to hide this from legend
end
legend('show');
我是否可以在plot命令中设置任何标志,以便此特定条目不会显示在图例中?
答案 0 :(得分:6)
您可以通过将'HandleVisibility'
属性设置为'off'
来实现此目的。请注意,这会将这些图的句柄隐藏到所有函数中,而不仅仅是legend
。
例如,
hold on
for k = 1:3
x = 1:10;
y = rand(1,10);
x2 = x;
y2 = y + 2;
plot(x,y);
plot(x2,y2,'--','HandleVisibility','off'); % Hide from legend
end
legend('show')
生成图表
答案 1 :(得分:4)
您可以使用semi-documented function called hasbehavior
,它允许您在发出绘图命令后忽略图例中的各个绘图。
figure;
hold on;
for i=1:5
plot(x,y);
h = plot(x2,y2);
hasbehavior(h,'legend',false);
end
legend('show');
它的半文档证明它可能迟早会在较新的MATLAB版本中破解,因此请谨慎使用。对于某些应用程序,它可能仍然是一个方便的选择。
正如@stephematician指出的那样,这个MATLAB内置在Octave中也是不可用的,这可能是其他答案更可取的另一个原因。
答案 2 :(得分:4)
正如路易斯·门多提到的那样(我不知何故错过了这个),句柄对于他的答案中的所有其他功能都是隐藏的,这在大多数情况下都是可以的,但是一个看起来与上面相同并且没有这个的替代解决方案效果是:
k_values = 1:3;
h = nan(size(k_values));
x = 1:10;
hold on
for k = k_values
y = rand(size(x));
y2 = y + 2;
h(k) = plot(x,y);
plot(x,y2,'--');
end
hold off
legend(h, strcat('data', num2str(k_values')))
final命令为plot(x,y)
命令返回的每个句柄设置图例条目。第一个参数是1x3行处理数组,它们将出现在图例中,第二个参数是3x5字符矩阵,其中每一行都是一个标签。