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,但它仍然非常适合减少大型数据集。请注意,如果对数据进行下采样,也会出现混叠现象,因此请谨慎使用。
我用 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,但它仍然非常适合减少大型数据集。请注意,如果对数据进行下采样,也会出现混叠现象,因此请谨慎使用。