防止特定绘图条目显示在MATLAB图例上

Ped*_*o77 9 matlab plot

我需要阻止特定的绘图条目显示在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');
Run Code Online (Sandbox Code Playgroud)

我可以在plot命令中设置任何标志,这样这个特定条目不会出现在图例中吗?

Lui*_*ndo 7

您可以通过将'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')
Run Code Online (Sandbox Code Playgroud)

生成图表

在此输入图像描述

  • @stephematician是的,这就是我最后一行的意思.你的想法更好; 你应该发一个答案 (2认同)

And*_*eak 5

您可以使用名为hasbehavior半文档化函数,该函数允许您在发出 plot 命令后忽略图例中的单个图。

figure;
hold on;
for i=1:5
    plot(x,y);
    h = plot(x2,y2);
    hasbehavior(h,'legend',false);
end
legend('show');
Run Code Online (Sandbox Code Playgroud)

它的半记录在案的事实表明,它可能打破早晚较新版本的MATLAB,所以请谨慎使用。对于某些应用程序,它可能仍然是一个方便的选择。

正如@stephematician 所指出的,这个 MATLAB 内置在 Octave 中也不可用,这可能是其他答案更可取的另一个原因。