matplotlib savefig() plots different from show()

savefig specifies the DPI for the saved figure (The default is 100 if it’s not specified in your .matplotlibrc, have a look at the dpi kwarg to savefig). It doesn’t inheret it from the DPI of the original figure.

The DPI affects the relative size of the text and width of the stroke on lines, etc. If you want things to look identical, then pass fig.dpi to fig.savefig.

E.g.

import matplotlib.pyplot as plt

fig = plt.figure()
plt.plot(range(10))
fig.savefig('temp.png', dpi=fig.dpi)

Leave a Comment