【问题标题】:Using contourf with a longitude-shifted projection in cartopy在 cartopy 中使用带有经度偏移投影的轮廓
【发布时间】:2018-09-08 16:19:48
【问题描述】:

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

【问题讨论】:

    标签: python cartopy


    【解决方案1】:

    这是 PDF 输出中的人工制品,而不是绘图有任何问题。如果您使用show() 将绘图显示到屏幕上而不是保存为 PDF,您应该不会再看到该行,同样如果您保存为 PNG 格式。

    事实上,有问题的 PDF 呈现更可能是您的 PDF 查看器的问题。我运行了您的代码并生成了一个 PDF,当在 MacOS 上使用 Preview.app 或 Chrome 查看时,它与您的问题相同,但是当我在 Acrobat Reader 中打开它时,它看起来完全没有问题。

    【讨论】:

    • 是的,我完全同意你的看法,但我想避免这个问题,因为我无法控制潜在读者将使用哪个查看器。毕竟,每隔一个经度都会正确渲染,因此在技术上可以“以正确的方式”显示等高线。
    猜你喜欢
    • 2019-11-07
    • 1970-01-01
    • 2020-04-05
    • 2022-01-19
    • 2018-10-09
    • 1970-01-01
    • 1970-01-01
    • 2017-12-04
    • 1970-01-01
    相关资源
    最近更新 更多