Запретить отображение конкретной записи графика в легенде графика MATLAB

Мне нужно предотвратить отображение определенной записи сюжета в легенде сюжета 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, чтобы эта конкретная запись не отображалась в легенде?

3 ответов


вы можете достичь этого, установив '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')

производит графе

enter image description here


можно использовать полу-документированная функция называется hasbehavior, что позволяет игнорировать отдельные участки в легенде после того, как вы выдали команду plot.

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

дело в том, что это полу-документально свидетельствует о том, что он мог бы перерыв рано или поздно в новой версии MATLAB, поэтому используйте с осторожностью. Что еще может быть удобным для некоторых приложений.

Как отметил @stephematician, этот встроенный MATLAB также недоступен в Октав, что может быть еще одной причиной, почему другие ответы предпочтительнее.


Как упоминает Луис Мендо (и я как-то пропустил это), дескриптор скрыт для всех других функций в его ответе, который будет в порядке в большинстве ситуаций, но альтернативное решение, которое выглядит идентичным вышеуказанному и не имеет этого эффекта:

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')))

заключительная команда устанавливает запись легенды для каждого дескриптора, возвращаемого