我使用cartopy
,试图在以非零经度为中心的投影中绘制填充轮廓:
from pylab import *
from cartopy import crs
xi = linspace(-180, 180, 37)
yi = linspace(-90, 90, 19)
XI,YI = meshgrid(xi, yi)
ZI = cos(pi*XI/180)*cos(pi*YI/180)
ax = axes( projection = crs.PlateCarree(central_longitude = 90) )
contourf(
XI, YI, ZI, 10,
transform=crs.PlateCarree(),
)
ax.coastlines()
savefig('mwe.pdf')
这将产生以下图,该图(在某些比例尺上)显示一条细的垂直线(穿过较暗区域的中心),对应于经度值(180度E或W)的不连续性。大概是因为contourf
输出的形状未在整个不连续处正确连接。
有没有办法解决这个问题?或者,我可以任意编辑coastlines()
用来模拟经度投影的基础坐标吗?
答案 0 :(得分:1)
这是PDF输出中的伪影,而不是图解中的任何错误。如果您使用show()
在屏幕上显示绘图而不是保存到PDF,则不再应该看到该行,如果保存为PNG格式也是如此。
有问题的PDF渲染实际上更可能是您的PDF查看器出现的问题。当您在Mac OS上使用Preview.app或Chrome浏览器时,我运行了您的代码并生成了与您同样的问题的PDF,但是当我在Acrobat Reader中打开它时,它看起来就很好了。