matplotlib contourf图像文件的大小

matplotlib contourf图像文件的大小,matplotlib,Matplotlib,我在matplotlib中得到了一个轮廓图,大约是5兆。关于如何缩小尺寸有什么建议吗?问题是您有许多contourf 对于某些类型的轴对象,可以在调用绘图功能时将光栅化选项设置为True右侧。例如,使用pcolormesh,可以使用 plt.pcolormesh(some_array,rasterized=True) 然而,对于contourf来说,这似乎不起作用,但有一种解决方法。您可以将zorder设置为某个较低的数字,然后将轴的光栅化\u zorder设置为高于该数字的某个数字,并且在保

我在matplotlib中得到了一个轮廓图,大约是5兆。关于如何缩小尺寸有什么建议吗?

问题是您有许多
contourf

对于某些类型的
对象,可以在调用绘图功能时将
光栅化
选项设置为
True
右侧。例如,使用
pcolormesh
,可以使用

plt.pcolormesh(some_array,rasterized=True)
然而,对于
contourf
来说,这似乎不起作用,但有一种解决方法。您可以将
zorder
设置为某个较低的数字,然后将
轴的
光栅化\u zorder
设置为高于该数字的某个数字,并且在保存图形时,它会将
轮廓f
返回的
四边形轮廓集
光栅化

例如:

plt.contourf(some_array,zorder=-9)
plt.gca().set_rasterization_zorder(-1)
下面,我展示了绘制
np.random.rand
形状数组
(500500)
后的一些示例文件大小

其中提供了以下三个文件:

$ ls -l contour?.pdf
-rw-r--r-- 1 tom 22804867 Oct 21 10:59 contourf1.pdf
-rw-r--r-- 1 tom 22808387 Oct 21 11:01 contourf2.pdf
-rw-r--r-- 1 tom   851117 Oct 21 11:03 contourf3.pdf

请注意,第三个文件的文件大小要小得多。

该图占用了5 MB的驻留内存?光栅化并写入文件时为5兆字节?以pdf格式写入磁盘时为5兆字节。对于某些数据集,pdf可能是最坏的情况,因为它通常会保留向量。虽然我的经验通常是散点图。尝试将光栅化为PNG。如果可行,您可以在单独的步骤中将PNG嵌入到PDF中。是否有方法将绘图光栅化,但将轴标签和标题保留为矢量数据?@BrianCain适用于某些类型的轴对象,但不适用于
contourf
。看看我的答案,看看能不能解决这个问题
$ ls -l contour?.pdf
-rw-r--r-- 1 tom 22804867 Oct 21 10:59 contourf1.pdf
-rw-r--r-- 1 tom 22808387 Oct 21 11:01 contourf2.pdf
-rw-r--r-- 1 tom   851117 Oct 21 11:03 contourf3.pdf