Not sure how to use figure('Position',[ ]) to get figures with proper dimensions
323 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
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 comentarios
Jan
el 19 de Ag. de 2021
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.
Respuesta aceptada
DGM
el 19 de Ag. de 2021
Editada: DGM
el 19 de Ag. de 2021
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 comentarios
DGM
el 24 de Ag. de 2021
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.
Más respuestas (0)
Ver también
Categorías
Más información sobre Axis Labels en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!