我正在使用matplotlib.pyplot.contourf()函数生成场轮廓图。该函数调用中的参数为:
contourf(xvec,xvec,w,levels,cmap=matplotlib.cm.jet)
在哪里
xvec = numpy.linspace(-3.,3.,50)
levels = numpy.linspace(-0.01,0.25,100)
w是我的数据。
生成的图在屏幕上看起来相当不错,但是当我使用对matplotlib.pyplot.savefig()的调用将其保存为pdf时,生成的pdf发生了很多混叠现象(我想就是这样)。对savefig的调用只是
savefig('filename.pdf')
。我尝试使用dpi参数,但是没有运气。调用matplotlib.get_backend()
会弹出“TkAgg”。我将附加一个另存为pdf的图形,与一个另存为png的图形(类似于屏幕上的外观)进行比较,以演示该问题:
png别名混叠:https://dl.dropbox.com/u/6042643/wigner_g0.17.png
带有别名的pdf:https://dl.dropbox.com/u/6042643/wigner_g0.17.pdf
请让我知道是否有其他我可以提供的详细信息,以帮助您给出答案。我应该提到,另存为.eps会产生与保存为pdf相似的不良结果。但是pdf文件更清楚地显示了问题。我的目标是最终获得生产质量的.eps文件,我可以将其附加到 latex 文档上,以科学论文的形式发表。如果我能找到一种令人满意的结果的方式,我会对围绕一种格式保存的工作感到满意,然后将其转换。
最好的,
Arne
最佳答案
在使用@pelson的有用答案一段时间后,我终于找到了解决这个长期存在的问题(当前在Matplotlib 2.0中使用)的适当方法,该问题不需要多次调用即可对图形进行轮廓化或栅格化。
我可以引用原始答案here以获得更广泛的解释和示例。
总而言之,该解决方案由以下几行组成:
cnt = plt.contourf(x, y, z)
for c in cnt.collections:
c.set_edgecolor("face")
plt.savefig('test.pdf')
关于pdf - 将matplotlib填充轮廓图保存为.pdf或.eps时的别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15822159/