Ensure x label never cut off

조회 수: 40 (최근 30일)
Edward Umpfenbach
Edward Umpfenbach 2012년 5월 4일
댓글: Opt User 2018년 2월 12일
I have a bar plot with some x labels that can be fairly lengthy (rotated vertically with rotateticklabel). If left on its own, Matlab cuts off the x labels.
How can I set the figure to "squeeze" the bars so that all of the labels are visible?

채택된 답변

Daniel Shub
Daniel Shub 2012년 5월 4일
A "manual" method of fixing cutoff labels by making the axis smaller is relatively easy to implement. You pick a scale value that makes the labels not be cutoff.
plot(1:10);
scale = 0.9;
pos = get(gca, 'Position');
pos(2) = pos(2)+scale*pos(4);
pos(4) = (1-scale)*pos(4);
set(gca, 'Position', pos)
A more automated solution where you programmatically find the lower edge of the tick labels is more involved. Once you have the lower edge you need to decide if you want to shrink the axis or enlarge the figure. There of course exists the possibility that the tick labels are so long that you cannot shrink the axis enough. A less likely problem is that your tick labels are larger than the screen. This requires another work around ( http://www.mathworks.com/matlabcentral/answers/37318-how-to-save-a-figure-that-is-larger-then-the-screen ).
A fully automated solution is difficult. The easiest solution would be to take the programmatic solution and include it in a modified rotateticklabel.
  댓글 수: 1
Edward Umpfenbach
Edward Umpfenbach 2012년 5월 4일
Thanks. Should be sufficient for my needs.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Tilen Thaler
Tilen Thaler 2013년 2월 20일
Dear Mr. Umpfenbach,
There is another method which mingles with Position and OuterPosition in the active axes.
For more details on the Position and OuterPosition axes properties please check Matlab help. But to summarize, here is a sample code:
% get current (active) axes property
get(gca,'OuterPosition')
If your label is cut off one of the elements of the four-element vector OuterPosition = [left bottom width height] should be modified. If your x label is cut off, then perhaps element bottom is too low. Increase it:
set(gca,'OuterPosition',[left bottom + 0.1 width height])
Note that the vector is in normalized units but you may change that to suit your needs.
Perhaps it might happen that title gets cut off in the process. In this case increase height as well.
  댓글 수: 1
Opt User
Opt User 2018년 2월 12일
This does not work for me, since it crops my figure on top.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Axis Labels에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by