Legend line spacing in R2014b

24 ビュー (過去 30 日間)
Scott Webster
Scott Webster 2014 年 11 月 26 日
コメント済み: Scott Webster 2016 年 4 月 22 日
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.

回答 (2 件)

Judi
Judi 2016 年 4 月 21 日
編集済み: Judi 2016 年 4 月 21 日
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 件のコメント
Scott Webster
Scott Webster 2016 年 4 月 22 日
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)?

サインインしてコメントする。


Doug Hull
Doug Hull 2014 年 11 月 26 日
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 件のコメント
Chad Greene
Chad Greene 2014 年 11 月 26 日
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 2014 年 12 月 15 日
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.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeLegend についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by