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?
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.
Here is the code:
legtxt=findobj(leg,'type','text');
set(legtxt(1),'color','k')
Just find out which legends correspond to which index.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With