How do I edit legend position information but retain it's location within a plot?
7 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi Matlab fans,
I've got a problem with the size and position of my legends.
I find that the text that appears in them is frequently too large for the legend box, and spills outside of it (possibly because I favour Times New Roman font). The simple solution is to manually edit the position information of the legend handle to something more appropriate (usually by trial-and-error viewing of the result). This is fine for a one-off (e.g. a figure for publication), but I've been trying to come up with an automated way of doing this.
lg = legend ('Blah', 'Blah', 'Blah', 1);
lgpos = get(lg, 'Position');
lgpos(3) = lgpos(3) + 0.1;
set(lg, 'Position', lgpos);
However, when I edit the position information in this way, the legend's location information is deleted (i.e. set to 'none'), and though I patently use the same position information when I resize the legend box, the resulting legend is usually in a new location offset from where it was originally placed by Matlab. Amending things to something like ...
lg = legend ('Blah', 'Blah', 'Blah', 1);
lgloc = get(lg, 'Location');
lgpos = get(lg, 'Position');
lgpos(3) = lgpos(3) + 0.1;
set(lg, 'Position', lgpos);
set(lg, 'Location', lgloc);
... doesn't help either and the position information now appears overwritten (i.e. my text now spills out of the legend box again).
Does anyone have an automated solution that will allow me to both stretch my legend box to accommodate my text, while keeping the box positioned where I originally asked it to be?
Cheers,
Andrew.
P.S. I'm aware of the 'OuterPosition' information of the legend (and, in fact, now edit it in my auto-corrector script), but it seems to have no bearing on the problem here.
0 Kommentare
Antworten (1)
Jan
am 13 Feb. 2012
The legend function has been subject to many changes in the last 10 years, therefore a helpful answer can depend on the used Matlab release.
The legend axes object is repositioned by a dedicated resize function of the figure. You can inspect the file "legend.m" to see, how this resize-function is linked to the figure size. One option is to dis-connect the original resize function and add a user-defined version. But if the units of the legend are 'normalized', most likely a disconnection is sufficient already.
There are some legend functions in the FileExchange, which are worth to try.
Siehe auch
Kategorien
Mehr zu Legend finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!