Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Matplotlib EPS导出忽略插值=';最近的';_Python_Matplotlib - Fatal编程技术网

Python Matplotlib EPS导出忽略插值=';最近的';

Python Matplotlib EPS导出忽略插值=';最近的';,python,matplotlib,Python,Matplotlib,我想将没有插值的热图导出为EPS文件。使用imshow()和interpolation='nearest',如果以PDF(或PNG或SVG)格式导出,则图像看起来正确,没有插值。但如果我作为EPS导出,它似乎忽略了interpolation='nearest' 是否有任何方法可以导出为无插值的每股收益 下面是演示导出文件类型差异的示例代码: import numpy as np import matplotlib.pyplot as plt data = np.random.rand(4,4)

我想将没有插值的热图导出为EPS文件。使用
imshow()
interpolation='nearest'
,如果以PDF(或PNG或SVG)格式导出,则图像看起来正确,没有插值。但如果我作为EPS导出,它似乎忽略了
interpolation='nearest'

是否有任何方法可以导出为无插值的每股收益

下面是演示导出文件类型差异的示例代码:

import numpy as np
import matplotlib.pyplot as plt

data = np.random.rand(4,4)

fig = plt.figure()
ax = fig.add_subplot(111)
ax.imshow(data,interpolation='nearest')

fig.savefig('test.eps')
fig.savefig('test.pdf')
fig.savefig('test.png')

matplotlib的较新版本接受参数
interpolation='none'
,这可能会产生所需的效果。对于您的代码,这将是

import numpy as np
import matplotlib.pyplot as plt

data = np.random.rand(4,4)

fig = plt.figure()
ax = fig.add_subplot(111)
ax.imshow(data,interpolation='none')

fig.savefig('test.eps')
fig.savefig('test.pdf')
fig.savefig('test.png')

我无法重现任何错误。当我复制并粘贴代码,然后检查保存的图形时,它们看起来都一样。我在Ubuntu11.04和Python2.7.1上使用matplotlib版本0.99.3,在MacOSX和Python2.7.2上使用matplotlib 1.0.1。这可能是由于EPS后端的操作系统特定差异造成的吗?这当然是可能的。要尝试的一件事是在保存后使用命令行实用程序(如imagemagick)将PDF转换为EPS。这是一种痛苦,但可能有效。如果成功,您甚至可以使用
os
模块,每次都可以从Python脚本中发出命令。您是否尝试使用
interpolation='none'
,这也会减小文件大小。不过,后端(Agg vs Cairo)存在一些问题,请参见@EMS:当我尝试使用ImageMagick的
convert
将PDF转换为EPS时,我丢失了分辨率(例如,我的轴标签现在模糊)。看起来该过程没有保留矢量元素,而是作为中间步骤进行光栅化。不过我对ImageMagick没有经验。