Reducing the size of pdf figure file in matplotlib

imsc picture imsc · May 21, 2012 · Viewed 17.5k times · Source

In matplotlib, I am using LineCollection to draw and color the countries, where the boundaries of the counties are given. When I am saving the figure as a pdf file:

fig.savefig('filename.pdf',dpi=300)

the figure size are quite big. However, on saving them as png file:

fig.savefig('filename.png',dpi=300)

and then converting them to pdf using linux convert command the files are small. I tried reducing the dpi, however that do not change the pdf file size. Is there a way the figures can be saved directly as smaller-pdf files from matplotlib?

Answer

David Zwicker picture David Zwicker · May 21, 2012

The PDF is larger, since it contains all the vector information. By saving a PNG, you produce a rasterized image. It seems that in your case, you can produce a smaller PDF by rasterizing the plot directly:

plt.plot(x, y, 'r-', rasterized=True)

Here, x, y are some plot coordinates. You basically have to use the additionally keyword argument raterized to achieve the effect.