Tweak legend entries without creating a new legend

65 views (last 30 days)
I have created a plot with a legend and now I would like to edit legend entries without recreating the whole legend. For example, for five legend entries I would like to reorder them like
newOrder = [2 3 5 4 1];
I can reorder the entries by first getting current legend handles and strings like this:
[~,~,plot_h,text_strings] = legend;
And then I can reorder the entries like this:
legend(plot_h(newOrder),text_strings{newOrder})
However, this doesn't only reorder the legend; it seems to delete the legend I'd already created, with its perfect placement and color scheme, etc, and creates a new legend with entries in the correct new order. How can I edit these entries without screwing up the placement, colors, boxoff, etc that I've already set?

Accepted Answer

Chad Greene
Chad Greene on 14 Jul 2014
I did not quite figure out how to edit an existing legend, but I did work up this function that does what I needed it to do.

More Answers (2)

Rodrigo Bernal
Rodrigo Bernal on 13 Jul 2021
Edit a specific legend entry of an existing legend:
figu=gca;
figu.Legend.String(6)={'Edit the 6th legend'};

Ben11
Ben11 on 11 Jul 2014
Edited: Ben11 on 11 Jul 2014
Maybe assign a handle to your legend in the first place, eg
hLegend = legend(...);
and then change the String property with the new order:
set(hLegend,'String',newOrder);
This should only update the current legend without replacing it.
  2 Comments
Chad Greene
Chad Greene on 11 Jul 2014
That's the first solution I tried, but there are a couple of issues:
1. It'd have to be set(h,'string',text_strings(newOrder))
and
2. That changes the order of the strings without changing the order of the markers beside them. I want to keep the associations between strings and their data.
Chad Greene
Chad Greene on 11 Jul 2014
Is there a legend property corresponding to 'String' for 'Data'? Then it would be a simple issue of
set(h,'String',text_strings(newOrder),'Data',plot_h(newOrder))

Sign in to comment.

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!