Cartopy set_extent 不工作
Cartopy set_extent is not working
我正在尝试使用 Mateplotlib cartopy 绘制下面的图。这是我正在使用的代码。
import cartopy.crs as ccrs
fig=plt.figure(figsize=(15,11))
ax = plt.subplot(111, projection=ccrs.PlateCarree(central_longitude=0))
mm = ax.contourf(new_lon[:],lat_post,new_aa[0,:,:],transform=ccrs.PlateCarree(central_longitude=0))
ax.coastlines(resolution='10m');
ax.stock_img();
# the following two lines increaes the vertical distance between the title and the upper tick.
from matplotlib import rcParams
rcParams['axes.titlepad']=20
# drawing the longitude and latitude ticks.
gl = ax.gridlines(crs=ccrs.PlateCarree(central_longitude=0), draw_labels=True,linewidth=2, color='gray', alpha=0.5, linestyle='--')
然而,一旦我添加以下代码 set_extent
ax.set_extent([np.min(new_lon),np.max(new_lon),np.min(lat_post)
,np.max(lat_post)])
数字变成那样
看你原来的地图,好像在0经度处有一个接缝,所以我猜np.min(new_lon)
是0,np.min(new_lon)
是360。如果你用set_extent()
,你在本初子午线处得到了一条非常窄的条带。我想如果你这样做 set_extent([-180, 180, ,np.min(lat_post), np.max(lat_post)]
效果会更好。
在这种情况下,我能想到的以编程方式实现它的唯一方法是:
lon_bounds = new_lon[:] # copy
lon_bounds[lon_bounds > 180] -= 360
ax.set_extent([np.min(lon_bounds), np.max(lon_bounds), np.min(lat_post), np.max(lat_post)])
我正在尝试使用 Mateplotlib cartopy 绘制下面的图。这是我正在使用的代码。
import cartopy.crs as ccrs
fig=plt.figure(figsize=(15,11))
ax = plt.subplot(111, projection=ccrs.PlateCarree(central_longitude=0))
mm = ax.contourf(new_lon[:],lat_post,new_aa[0,:,:],transform=ccrs.PlateCarree(central_longitude=0))
ax.coastlines(resolution='10m');
ax.stock_img();
# the following two lines increaes the vertical distance between the title and the upper tick.
from matplotlib import rcParams
rcParams['axes.titlepad']=20
# drawing the longitude and latitude ticks.
gl = ax.gridlines(crs=ccrs.PlateCarree(central_longitude=0), draw_labels=True,linewidth=2, color='gray', alpha=0.5, linestyle='--')
ax.set_extent([np.min(new_lon),np.max(new_lon),np.min(lat_post)
,np.max(lat_post)])
数字变成那样
看你原来的地图,好像在0经度处有一个接缝,所以我猜np.min(new_lon)
是0,np.min(new_lon)
是360。如果你用set_extent()
,你在本初子午线处得到了一条非常窄的条带。我想如果你这样做 set_extent([-180, 180, ,np.min(lat_post), np.max(lat_post)]
效果会更好。
在这种情况下,我能想到的以编程方式实现它的唯一方法是:
lon_bounds = new_lon[:] # copy
lon_bounds[lon_bounds > 180] -= 360
ax.set_extent([np.min(lon_bounds), np.max(lon_bounds), np.min(lat_post), np.max(lat_post)])