Legend line spacing in R2014b

24 visualizzazioni (ultimi 30 giorni)
Scott Webster
Scott Webster il 26 Nov 2014
Commentato: Scott Webster il 22 Apr 2016
In previous versions I was able to control (to some degree) the line spacing in figure legends by changing the PlotBoxAspectRatio property of the legend. I can't seem to do this in R2014b. Anyone know of a new way of doing this?
Basically I can't figure out how to make the legend smaller than some minimum that Matlab seems to determine automatically, and I disagree with how small looks reasonable.

Risposte (2)

Judi
Judi il 21 Apr 2016
Modificato: Judi il 21 Apr 2016
In R2015b, I found a hack around this annoying limitation. There appears to be a minimum fontsize that can't be overridden; however, entering a fontsize less than this minimum has the effect of reducing the line-spacing between the legend entries. This solution would only work if you were happy to have the fontsize at the inbuilt minimum. I'm delighted to find this works for my current graph!
A code snippet for my graph is as follows - your mileage may vary:
[legh3,legicons3,legplots3,legs3]=legend([sdplot1(1) sdplot2(1) sdplot3(1)],'Foo','Bar','Baz','Location','southeast');
legh3.Box='off';
legh3.FontSize=4;
legh3.Position=[ 0.81 0.35 0.1286 0.001]
Note that I'm also using the panel add-in, and there may be some interdependencies going on with how font size is treated. http://www.mathworks.com/matlabcentral/fileexchange/20003-panel
  1 Commento
Scott Webster
Scott Webster il 22 Apr 2016
Unfortunately I can't duplicate this behaviour, I just get a really small legend font size. So it's probably something to do with panel (didn't try that)?

Accedi per commentare.


Doug Hull
Doug Hull il 26 Nov 2014
Here are a variety of changes to legend:
The low level access you had to legend in the past becuase it was an axis is not there anymore. Can you show what you had in the past and what it looks like now so we have a better idea of how to help?
  3 Commenti
Chad Greene
Chad Greene il 26 Nov 2014
I noticed this same behavior when you posted your question--
leg.Position(3) = .2*leg.Position(3)
should adjust the width of the legend, but instead it tinkers with the x position. And setting leg.Position(4) too small similarly moves the legend vertically without resizing it.
Scott Webster
Scott Webster il 15 Dic 2014
I submitted a bug report regarding the changing legend position behaviour discussed as a subtopic here and got the following response back:
Thank you for reporting this issue. The behavior you have described is expected, and is due to how MATLAB “legend” handles a height or width value that is too small. For future reference, I have included the minimum dimensions for “legend” below.
  • minimum legend height is 0.1165 normalized units
  • minimum legend width is 0.1536 normalized units
I can understand why this behavior might be surprising, and I have conveyed your concerns to our developers to be considered for a future enhancement.
I asked a follow up question and it was confirmed that in addition to the "absolute minimum" sizes above, there are minimum sizes that depend on the legend contents.

Accedi per commentare.

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by