Best way to get constant plot sizes with varying width Yticklabels?

11 views (last 30 days)
  • Matlab 2021a
  • Windows 10 64-bit
I am using the awesome exportgraphics command after programmatically fixing the size of the plot window to save the figures as vector PDFs. I then use these PDFs as figures in a LaTeX document with identical scaling parameters.
My issue is that width of the yticklabels scales the innerposition of the plot so that importing a figure with only two digit widths on the yticklablels next to one with three digits results in different sized plots. This effect is much worse if one of them contains a negative sign.
In other words, the entire bounding box (I believe is called the outerposition) of the figure is fixed size. But because the width of the yticklabels changes, the actual plot window scales to fit.
I have not tried it yet, but I believe that changing the fixed size of the plot window (innerposition) results in PDFs of different sizes, which will have the same result once it is added to the Latex document. I do not want to have custom scaling for each figure.
  2 Comments
William Perdikakis
William Perdikakis on 17 Apr 2021
Edited: William Perdikakis on 17 Apr 2021
Sorry, I meant exportgraphics, corrected above.
This should be a MWE of the issue. Be sure to open the PDFs in the same sized window.
From this example, you can clearly see that one PDF is wider than the other. If these figures are scaled into the same sized bounding box the one labeled "small" will scale down more and appear smaller.
A solution that I can think of would be forcing the ylabeltick width, so the 'normal' graph would have padding on the left side, for example.
N=100;
t=linspace(0,2*pi,N);
y=sin(t);
plot(t,y+1)
ylabel('normal')
exportgraphics(gca,'normal.pdf','ContentType','vector')
figure
plot(t,100*y)
ylabel('small')
exportgraphics(gca,'small.pdf','ContentType','vector')

Sign in to comment.

Answers (1)

Rishik Ramena
Rishik Ramena on 24 May 2021
The plot sizes rendered by the exportgraphics function for vectors will be the same, but the dimensions of the pdf file will depend on your x and y labels and values. You can consider setting the labels and tick sizes in the plots but even that would not guarantee a consistent pdf size. I would suggest you to try the export_fig function. Try the -nocrop option, it might serve your purpose. Here's a link to the github page with usages and examples.

Community Treasure Hunt

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

Start Hunting!

Translated by