MATLAB Answers

Custom Legend Placement on a Plot

104 views (last 30 days)
Jim on 21 Mar 2013
Commented: Sebastian Lopez on 30 Dec 2020
I want to place a legend below the Title but above the plot area of a scatter plot. It looks like the built-in methods place the legend within the Plot Area or outside of the area defined by the Plot Area and Title. Is this true?
One method I considered was to include the contents of the legend in the bottom rows of a multi-line Title. However, I cannot figure out how to replicate the line / marker styles in a string (I am specifying the line and marker styles to be used in the plot).


Sign in to comment.

Answers (1)

Peter on 21 Mar 2013
You could create a multiline title, using spaces to create room for the legend, and then move the legend, using its position property, like:
title({'Title';' ';' ';' '})
h = legend('line1','line2');
pos = get(h,'Position');
posx = 0.5;
posy = 0.85;
set(h,'Position',[posx posy pos(3) pos(4)]);
Change posx and posy to position your legend.


Jim on 22 Mar 2013
I am considering doing that. However, I don't know how to replicate the line / marker styles in the Title. In my particular case, I have different combinations of circle and square markers and solid and dashed lines. So, how do I display those line styles in the Title?
Peter on 22 Mar 2013
Don't the line/marker styles appear in the legend box that is created with the h = legend(...) command?
Sebastian Lopez
Sebastian Lopez on 30 Dec 2020
Works perfectly fine! Thanks

Sign in to comment.


Community Treasure Hunt

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

Start Hunting!