Why this happens?
The reason for this behaviour is that Mathematica works with two kinds of units:
Plot coordinates scale with the figure: if you print the figure (or export to PDF) at twice the size, objects specified on plot coordinates double in size. But offset coordinates do not scale: if the font size is 10 pt, it will be 10 pt no matter how big the figure.
The default graphics size is 360 pt wide (12.7 cm). When you specify the size using ImageSize
, it is also understood in points. When using a 10 pt font size and having seven figures in a row, this'll make the tick labels pretty crowded.
This behaviour can cause problems (especially because the space left for the tick labels is also determined in offset coordinates), but can be very useful too when one needs to ensure that the fonts of the exported figure are at the correct size (e.g. 8 pt and no smaller).
Possible solutions
Now that you understand why this happens, you can make a good judgement about what ImageSize
to choose when exporting, and what font size to use.
Sometimes it's desirable to have the text scale with the figure: Mathematica has a third kind of unit for this, Scaled
units (as @halirutan described). This lets you specify e.g. the font size as a fraction of the plot range width:
Plot[Sin[x], {x, 0, 10}, BaseStyle -> {FontSize -> Scaled[0.04]}]
When you resize this, the text scales with the figure.
For completeness, there is also a fourth type of unit, ImageScaled
. This lets you specify sizes as a fraction of the full figure width, including the space left for tick labels (not only the plot range---i.e. the area inside the frame).
I find that this multitude of unit types is useful sometimes (when exporting figures to size), but at other times it makes it really difficult to achieve what I want, especially when trying to make tightly packed plot grids and specify the full size of the grid. Related: Sizing cells in a GraphicsGrid/GraphicsRow