5

我想绘制一个北半球的极地立体图,在图的底部有 180,这样我就可以强调太平洋地区。我正在使用来自 git 的最新 cartopy,可以制作极地立体图,但我不知道如何更改图底部的经度。我尝试将经度范围设置为 [-180, 180] 但这无济于事,并且 NorthPolarStereo() 不接受任何关键字参数,如 central_longitude。目前这可能吗?

4

2 回答 2

3

对于 Cartopy 0.17 和 matplotlib 3.1.1 (Python 3.7),我在上面的解决方案中遇到了 set_extent() 错误。

似乎 set_extent() 只能这样工作:

ax1.set_extent([-180, 180, 0, 90], crs=ccrs.PlateCarree())

ax2.set_extent([-179, 179, 0, 90], crs=ccrs.PlateCarree())

所以,旋转的图像需要一些奇怪的经度边界..

于 2019-09-05T14:39:54.460 回答
2

此功能现已在 Cartopy (v0.6.x) 中实现。以下示例在北半球极地立体投影中生成两个子图,一个具有默认设置,一个具有更改中心经度:

"""Stereographic plot with adjusted central longitude."""
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
from cartopy.examples.waves import sample_data


# read sample data
x, y, z = sample_data(shape=(73, 145))

fig = plt.figure(figsize=(8, 4))

# first plot with default settings
ax1 = fig.add_subplot(121, projection=ccrs.NorthPolarStereo())
cs1 = ax1.contourf(x, y, z, 50, transform=ccrs.PlateCarree(),
                   cmap='gist_ncar')
ax1.set_extent([0, 360, 0, 90], crs=ccrs.PlateCarree())
ax1.coastlines()
ax1.set_title('Centred on 0$^\circ$ (default)')

# second plot with 90W at the bottom of the plot
ax2 = fig.add_subplot(
    122, projection=ccrs.NorthPolarStereo(central_longitude=-90))
cs2 = ax2.contourf(x, y, z, 50, transform=ccrs.PlateCarree(),
                   cmap='gist_ncar')
ax2.set_extent([0, 360, 0, 90], crs=ccrs.PlateCarree())
ax2.coastlines()
ax2.set_title('Centred on 90$^\circ$W')

plt.show()

这个脚本的输出是:

NH极地立体

于 2013-01-08T15:01:21.047 回答