在轮廓图中使用带有经度偏移投影的Contourf

时间:2018-09-08 16:19:49

标签: python cartopy

我使用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()用来模拟经度投影的基础坐标吗?

enter image description here

1 个答案:

答案 0 :(得分:1)

这是PDF输出中的伪影,而不是图解中的任何错误。如果您使用show()在屏幕上显示绘图而不是保存到PDF,则不再应该看到该行,如果保存为PNG格式也是如此。

有问题的PDF渲染实际上更可能是您的PDF查看器出现的问题。当您在Mac OS上使用Preview.app或Chrome浏览器时,我运行了您的代码并生成了与您同样的问题的PDF,但是当我在Acrobat Reader中打开它时,它看起来就很好了。