【发布时间】:2017-07-07 22:39:23
【问题描述】:
我正在尝试将 Cartopy example plot 用于北极的圆形南极立体图并添加数据。我有几个问题。
首先,在示例代码中,陆地要素添加在海洋要素之前。当我这样做时,我得到了一张只有海洋的地图。我在下面的代码中颠倒了调用的顺序,得到了一张陆地和海洋的地图。为什么其他顺序适用于南极示例?
其次,更重要的是,我无法弄清楚为什么我的 pcolormesh 调用没有任何效果。
我正在使用 Python 2.7.7、matplotlib 1.5.1 和 Cartopy 0.15.1。
import matplotlib.path as mpath
import matplotlib.pyplot as plt
import numpy as np
import cartopy.crs as ccrs
import cartopy.feature
lats = np.linspace(60,90,30)
lons = np.linspace(0,360,200)
X,Y = np.meshgrid(lons,lats)
Z = np.random.normal(size = X.shape)
def main():
fig = plt.figure(figsize=[10, 5])
ax = plt.subplot(1, 1, 1, projection=ccrs.NorthPolarStereo())
fig.subplots_adjust(bottom=0.05, top=0.95,
left=0.04, right=0.95, wspace=0.02)
# Limit the map to -60 degrees latitude and below.
ax.set_extent([-180, 180, 60, 60], ccrs.PlateCarree())
ax.gridlines()
ax.add_feature(cartopy.feature.OCEAN)
ax.add_feature(cartopy.feature.LAND)
# Compute a circle in axes coordinates, which we can use as a boundary
# for the map. We can pan/zoom as much as we like - the boundary will be
# permanently circular.
theta = np.linspace(0, 2*np.pi, 100)
center, radius = [0.5, 0.5], 0.5
verts = np.vstack([np.sin(theta), np.cos(theta)]).T
circle = mpath.Path(verts * radius + center)
ax.set_boundary(circle, transform=ax.transAxes)
ax.pcolormesh(X,Y,Z,transform=ccrs.PlateCarree())
plt.show()
if __name__ == '__main__':
main()
【问题讨论】:
标签: python matplotlib cartopy