MATLAB: Присвойте несколько цветов для отправки текстовых сообщений в легенде

Я пробую к тексту цветового кода в легенде. (Так как я пытаюсь отсортировать несколько графиков в различные категории, я не могу только полагаться на цвета линии в легенде.) мне удалось установить цвет текста для всей легенды, но мне не может удаться присвоить его линию за линией. Действительно ли это возможно?

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

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

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

9
задан Doresoom 3 February 2010 в 17:50
поделиться

3 ответа

Вот код:

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

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

9
ответ дан 4 December 2019 в 07:35
поделиться

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

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

8
ответ дан 4 December 2019 в 07:35
поделиться

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

[legend_h, object_h, plot_h, text_strings] = legend ( ...) возвращает

  • legend_h - дескриптор осей легенды
  • object_h - дескрипторы линейных, патч и текстовых графических объектов, используемых в легенде
  • plot_h - дескрипторы линий и других объектов, используемых в plot
  • text_strings - Массив ячеек текстовых строк, используемых в легенде

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

12
ответ дан 4 December 2019 в 07:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: