MATLAB: Assign multiple colors to text in legend

Doresoom picture Doresoom · Feb 3, 2010 · Viewed 24.6k times · Source

I'm trying to color code text in a legend. (Since I'm trying to sort several plots into different categories, I can't just rely on the line colors in the legend.) I've managed to set the text color for the entire legend, but I can't manage to assign it line by line. Is this possible?

Code so far:

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

sets the text color for the entire legend as red. I'd like to be able to make some red, and some black. I tried assigning the color array as an n x 3 matrix, but MATLAB doesn't like that very much. I also poked around the legend properties using get(leg), but I couldn't find anything else that seemed useful. Any suggestions?

Answer

Yair Altman picture Yair Altman · Feb 3, 2010

While the answers by yuk and gnovice are correct, I would like to point out a little-known and yet fully-documented fact that the legend function returns additional handles that correspond to the legend components. From the documentation of the legend function:

[legend_h, object_h, plot_h, text_strings] = legend(...) returns

  • legend_h — Handle of the legend axes
  • object_h — Handles of the line, patch, and text graphics objects used in the legend
  • plot_h — Handles of the lines and other objects used in the plot
  • text_strings — Cell array of the text strings used in the legend

These handles enable you to modify the properties of the respective objects.