han*_*nno 17 python matplotlib
在一些pdf查看器中,例如在OSX上预览,使用matplotlib's pcolor 制作的图有白线(见下图).我怎么能摆脱他们?
源代码是非常简单的(选择的任何数据x,y,z):
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")
Run Code Online (Sandbox Code Playgroud)

far*_*rth 19
评论有一个很好的解决方案,利用imshow.当imshow不适合输入数据时(例如,它不是均匀间隔),这通常可以解决这个问题,
pcol = pl.pcolormesh(x,y,z,cmap="Blues",linewidth=0,)
pcol.set_edgecolor('face')
Run Code Online (Sandbox Code Playgroud)
如果这种方法不能充分减少线条,您也可以尝试这样做:
pl.pcolormesh(x,y,z,cmap="Blues",linewidth=0,rasterized=True)
Run Code Online (Sandbox Code Playgroud)
除了减少方块之间的线之外,这种方法还倾向于稍微减小文件大小,这有时是有用的.在这种情况下,您可能希望dpi在保存时调整设置(例如pl.savefig("heatmap.pdf", dpi=300)),直到获得满意的效果.
接受的答案对我来说效果不佳。我似乎已经得到了使用接近antialiased=True,除了linewidth=0。这是与 matplotlib 版本3.0.2。请注意,中间图对应于最佳版本。
fig, axes = plt.subplots(1,3, figsize=(15,5))
axes[0].pcolormesh(XX, YY, ZZ_r, zorder=-1, norm=norm, cmap='magma', alpha=0.5, antialiased=True)
axes[1].pcolormesh(XX, YY, ZZ_r, zorder=-1, norm=norm, cmap='magma', alpha=0.5, antialiased=True, linewidth=0.0)
axes[2].pcolormesh(XX, YY, ZZ_r, zorder=-1, norm=norm, cmap='magma', alpha=0.5, antialiased=False, linewidth=0.0)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8262 次 |
| 最近记录: |