Вопрос

Я пытаюсь раскрасить текст кода в легенде. (Поскольку я пытаюсь сортировать несколько участков в разные категории, я не могу просто полагаться на цвета линии в легенде.) Мне удалось установить цвет текста для всей легенды, но мне не удалось Назначьте его линию по строке. Это возможно?

Код до сих пор:

list={'Label 1','Label 2','Label 3'};
leg=legend(list);
set(leg,'Textcolor',[1 0 0])

Устанавливает цвет текста для всей легенды как красный. Я хотел бы иметь несколько красных и немного черных. Я попытался назначить цветной массив в виде матрицы NX 3, но MATLAB этого не понравится. Я также покинул свойства легенды, используя get(leg), Но я не мог найти ничего другого, что казалось полезным. Какие-либо предложения?

Это было полезно?

Решение

Вот код:

legtxt=findobj(leg,'type','text');
set(legtxt(1),'color','k')

Просто выясните, какие легенды соответствуют какому индексу.

Другие советы

Хотя ответы Юка и Гновице верны, я хотел бы отметить немного известный и все же полностью задокументированный факт, что легенда Функция возвращает дополнительные ручки, которые соответствуют компонентам легенды. Из документации легенда Функция:

Legend_h, Object_h, plot_h, text_strings] = легенда (...) возвращает

  • legend_h - ручка осей легенды
  • Object_H - Ручки линии, патч и текстовые графические объекты, используемые в легенде
  • plot_h - ручки линий и других объектов, используемых на участке
  • Text_Strings - Яблочный массив текстовых строк, используемых в легенде

Эти ручки позволяют изменять свойства соответствующих объектов.

Чтобы изменить текстовые цвета легенды индивидуально, вы должны сначала получить ручки к текстовым объектам, которые являются детьми объекта легенды. Тогда вы можете изменить свои текстовые цвета отдельно. Вот пример того, как вы можете сделать это:

plot(1:10, rand(1, 10), 'r');       % Plot a random line in red
hold on;
plot(1:10, rand(1, 10), 'b');       % Plot a random line in blue
hLegend = legend('a', 'b');         % Create the legend
hKids = get(hLegend, 'Children');   % Get the legend children
hText = hKids(strcmp(get(hKids, 'Type'), 'text'));  % Select the legend children
                                                    %    of type 'text'
set(hText, {'Color'}, {'b'; 'r'});  % Set the colors

Обратите внимание, что порядок цвета в последней строке синий тогда красный, в обратном порядке по порядку того, как этикетки передаются на legend функция. Вышесказанное даст вам следующий участок:

enter image description here

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top