Not sure how to use figure('Position',[ ]) to get figures with proper dimensions
조회 수: 322 (최근 30일)
이전 댓글 표시
I want to make the inner region of the .png have the latitude and longitude axes of the plot roughly equal in size and more square.
This is what I was using to set the position:
figure('Position',[1 1 1100 1100])
And the size of the figure is wider than it is taller, but my goal is to have the inner region of the plot (latitude and longitude axes) to be roughly a square. I was using 'axis square' prior, but some of the plots (that have x, y, or both axes labeled) seem to have different sizes when I use saveas with a .png extension.
I have tried using InnerPosition and OuterPosition in the figure command, but have not had any luck.
Also attached is the figure itself.
댓글 수: 2
Jan
2021년 8월 19일
Does ot matter, that the axis labels are not readable? How many pixels does your monitor have? Does this work:
figure('Units', 'pixels', 'Position', [100, 100, 400, 400])
It is not clear, what exacty should be square: The inner position of the figure, which is exported to the PNG file or the axes itself? Literally "seem to have different sizes" mean, that they do have the same size and it only looks differently.
채택된 답변
DGM
2021년 8월 19일
편집: DGM
2021년 8월 19일
The margins needed for the labels/title etc may vary, so the inner position will vary. If you can come up with an inner position value which allows for the worst-case (e.g. large tick labels), then you can specify it for all plots.
x = 0:9;
plot(x,x);
% set figure size/location in pixels; doesn't work if figure is docked
set(gcf,'units','pixels','outerposition',[1 1 500 500],'windowstyle','normal')
% set inner position (the plot box); force it square
set(gca,'units','normalized','position',[0.1300 0.1100 0.7750 0.8150], ...
'plotboxaspectratio',[1 1 1])
Of course, plots with short labels or no labels will have excess padding, but that's necessarily the result of making the geometry fixed.
This is a composite of two different plots, showing that the saved images are the same size and the plot boxes are in the same locations
Depending on your version, there may be properties like 'positionconstraint' which may be relevant. I'm running an older version, so you may have to extrapolate.
댓글 수: 8
DGM
2021년 8월 24일
Can you come up with a simplified example to demonstrate how it's failing? I can see if I can replicate it and maybe try to fix it.
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Axis Labels에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!