Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork7.9k
Description
Label padding around the axes depends on the length of the label when figure is saved as pdf.
The below code creates a figure and adds labels of different length. Those labels are not well aligned in the saved pdf version. Instead their padding towards the axes is depending on how many characters the label has. This issue is the more pronounced the larger the dpi (at constant figsize*dpi product).
The png files saved do not show this unexpected behaviour; all labels are aligned correctly. The expected output when saving the pdf file is of course the same as the png.
import matplotlib.pyplot as pltimport matplotlib.ticker as tickerimport numpy as npa = np.random.rand(5,5)for i in [1,1.25,1.5]: plt.rcParams["axes.linewidth"] = i*0.1 fig = plt.figure(figsize=(i,i), dpi=int(500./i)) fig.subplots_adjust(0.44,0.44,0.56,0.56) ax = fig.add_subplot(111) ax.imshow(a) ax.set_title("figsize {}, dpi {}".format((i,i), int(500./i)), size=i) ax.set_yticklabels(["",1,10,100, "ABCDEFGH", "X"]) ax.set_xticklabels(["",1,10,100, "long long label", "short"]) ax.xaxis.set_major_locator(ticker.MultipleLocator(1)) ax.yaxis.set_major_locator(ticker.MultipleLocator(1)) ax.tick_params(axis='both', which='both', labelsize=i*0.5, length=i*0.5, width=i*0.05) ax.tick_params(axis='x',which='both', rotation=90) plt.savefig("fig_f{}.pdf".format(i)) plt.savefig("fig_f{}.png".format(i))plt.show()
[reproduced with python 2.7, matplotlib 2.1, Qt4Agg backend as well as TkAgg backend]
This issue was initially brought up inthis Stackoverflow question.