2014-11-23 80 views
11

在某些pdf查看器中,例如OSX上的Preview,使用matplotlib的pcolor制作的图具有白线(请参见下图)。我怎样才能摆脱它们?matplotlib的pcolor中的白线

的源代码是非常简单的(选择的任何数据xyz):

import matplotlib 
matplotlib.use("pdf") 
import matplotlib.pyplot as pl 
pl.figure() 
pl.pcolormesh(x,y,z,cmap="Blues",linewidth=0) 
pl.savefig("heatmap.pdf") 

enter image description here

+2

这是因为'pcolormesh'实际上绘制了单独的矩形,并且一些pdf查看器渲染它们的方式与其他方法不同。无论是作为解决方法,还是因为它更高效,在这种情况下最好使用'imshow'。例如,你的情况:'plt.imshow(z,interpolation ='nearest',cmap ='Blues',extent = [x.min(),x.max(),y.min(),y.max ()])'。 – 2014-11-23 19:45:00

+0

谢谢!那正是我所锁定的。 – hanno 2014-11-23 23:24:15

+0

颜色栏存在类似的问题。你有想法解决这个问题吗? – hanno 2014-11-24 00:45:34

回答

12

的意见有利用imshow一个很好的解决方案。当imshow是不适合的输入数据(例如,它是不是均匀间隔),这通常可以解决这个问题,

pcol = pl.pcolormesh(x,y,z,cmap="Blues",linewidth=0,) 
pcol.set_edgecolor('face') 

如果这种做法不降低线足够,你也可以试试这个:

pl.pcolormesh(x,y,z,cmap="Blues",linewidth=0,rasterized=True) 

除了减少正方形之间的线条之外,这种方法还会减少文件大小,这有时会很有用。在这种情况下,您可能想要在保存时调整dpi设置(例如pl.savefig("heatmap.pdf", dpi=300)),直到您获得满意的结果。

+0

'rasterized = True'做了窍门,谢谢! – yoavram 2017-08-24 13:39:04

+0

不适合我。 – Andyk 2018-01-22 16:43:29