Запретить отображение конкретной записи графика в легенде графика 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')
производит графе
можно использовать полу-документированная функция называется 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')))
заключительная команда устанавливает запись легенды для каждого дескриптора, возвращаемого