我在matplotlib中有一个大约5兆的轮廓图。关于如何减小尺寸的任何建议?
答案 0 :(得分:1)
问题是您有contourf
对于某些类型的Axes
个对象,您可以在调用绘图功能时将rasterized
选项设置为True
。例如,使用pcolormesh
,您可以使用
plt.pcolormesh(some_array,rasterized=True)
然而,对于contourf
这似乎不起作用,但有一种解决方法。您可以将zorder
设置为某个较低的数字,然后将rasterization_zorder
的{{1}}设置为高于该数字的某个数字,当您保存该数字时,Axes
返回QuadContourSet
将被栅格化。
例如:
contourf
下面,我在绘制plt.contourf(some_array,zorder=-9)
plt.gca().set_rasterization_zorder(-1)
形状np.random.rand
数组后显示一些示例文件大小。
(500,500)
其中包含以下三个文件:
import matplotlib.pyplot as plt
import numpy as np
my_array = np.random.rand(500,500)
plt.contourf(my_array)
plt.savefig('contourf1.pdf')
plt.close()
plt.contourf(my_array,rasterized=True) # this won't work
plt.savefig('contourf2.pdf')
plt.close()
plt.contourf(my_array,zorder=-9)
plt.gca().set_rasterization_zorder(-1)
plt.savefig('contourf3.pdf')
plt.close()
注意第三个文件的文件小得多。