Matplotlib:混合导出为 pdf 和 png

Matplotlib: mixed export to pdf and png

我用 matplotlib 创建了一个图形 figure, axes = plt.subplots(nrows=3, ncols=2),绘制了各种东西 axes[0,0].pcolormesh(...),然后将图形导出为 PDF figure.savefig('figure.pdf') 或 PNG figure.savefig('figure.png').

我必须使用 PNG,因为 PDF 文件会很大,但这会使图形标签和其他文本模糊

有没有办法将图形导出为 PDF——以便标签等是矢量图形——但在生成的 PDF 文件中将绘图导出为 PNG?简而言之:导出为 PDF,但在该 PDF 中绘制为 PNG(对于小文件大小)。

这是 Matplotlib 相对于其他库的巨大 优势之一。如果你这样做:

fig, ax = plt.subplots()
ax.pcolormesh(np.random.randn(500, 500), rasterized=True)
fig.savefig('Test.pdf', dpi=50)

轴和标签仍将是矢量,但 pcolormesh 将以 50 dpi 进行光栅化。当然,为了出版,您应该使用更高的 dpi,但它仍然非常适合减少大型数据集。请注意,如果对数据进行下采样,也会出现混叠现象,因此请谨慎使用。