How can I get a legend that identifies ALL series shown on a group of plots?

I have 9 subplots on one figure. 7 of those 9 subplots, including the last subplot, only have 3 data series associated with the plots. However, the other 2 have 4 data series. How do I get the legend to retain the information about ALL of the series shown in the figure? See attached image. Notice that plots 5 and 6 have observed data on them, but the others (including the last one) does not. I need to the legend to reflect the observed data.

1 Comment

I believe the legend is associated with each individual axis rather than the figure, so there's probably no built in way to do this.
However, you could try making a hidden axis on the figure that contains a dummy series for each series in the figure. You could then create a legend for that hidden axis, and force the legend to be visible, even though its parent axis is hidden. . .

Sign in to comment.

 Accepted Answer

To do this, save the handles of the lines you want labeled and pass these to the legend command. They don't have to all share a parent figure.
ax(1) = subplot(2,2,1);
h1 = plot(rand(10,3));
ax(2) = subplot(2,2,2);
h2 = plot(rand(10,2));
ax(3) = subplot(2,2,3);
h3 = plot(rand(10,2));
set([h1;h2;h3], {'color'}, {'r';'g';'b';'c';'m';'y';'k'});
legend(ax(3), [h1;h2;h3], '1','2','3','4','5','6','7');

More Answers (0)

Community Treasure Hunt

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

Start Hunting!