如何在复印中使用lat-lon对在阿尔伯拉等面积投影中绘图



我正在尝试使用caropy在lat-lon对数据中绘制PM数据。我用两种不同的投影试过了。(PM2.5['lat']具有lat值,PM2.5['lon']具有lon值,val是PM2.5浓度的网格(:

  1. Plate Carre和2。阿尔伯拉等面积圆锥投影。我在这里附上代码和数字。我的问题是

a(为什么阿尔伯拉等面积圆锥投影中的颜色看起来更平滑?

b( 如何在圆锥区域投影中添加州边界?

Albera投影代码

extent = [-125,-65,25,50]
fig = plt.figure(figsize=(8,4))
ax.set_extent(extent)
ax.coastlines(resolution="110m",linewidth=1)
ax.gridlines(linestyle='--',color='black')
ax.add_feature(cfeature.BORDERS.with_scale('50m'), alpha=1)
ax.add_feature(cfeature.STATES)
projection = ccrs.AlbersEqualArea(central_longitude=-100)
ax.add_feature(COUNTIES, facecolor='none', edgecolor='gray', alpha =0.5)
projection = ccrs.AlbersEqualArea(central_longitude=-100)
fig.add_axes([-.05, -.05, 1.2, 1.2], projection=projection)
ax.add_feature(cfeature.STATES)[enter image description here][1]
clevs = np.arange(0,40)
plt.contourf(PM25['lon'], PM25['lat'], val,clevs, transform=ccrs.PlateCarree(),cmap='viridis',vmin=0, 
vmax =16)

阿尔伯拉等面积圆锥投影

板Carre投影代码

from matplotlib import colorbar, colors
extent = [-125,-65,25,50]
fig = plt.figure(figsize=(8,4))
ax = plt.axes(projection=ccrs.PlateCarree())
ax.set_extent(extent)
ax.coastlines(resolution="110m",linewidth=1)
ax.gridlines(linestyle='--',color='black')
ax.add_feature(cfeature.BORDERS.with_scale('50m'), alpha=1)
ax.add_feature(cfeature.STATES)
#ax.add_feature(COUNTIES, facecolor='none', edgecolor='gray', alpha =0.5)
clevs = np.arange(0,40)
plt.contourf(PM25['lon'], PM25['lat'], val,clevs, transform=ccrs.PlateCarree(),cmap='viridis',vmin=0, 
vmax =16)

平板Carre投影

a(我认为阿尔伯斯看起来更光滑,可能只是因为投影不同,投影的图形Plate Carre被挤压成一条带。

b( 你应该像Plate Carre图中那样首先设置轴投影,然后形状文件多边形将显示在图中。

fig = plt.figure(figsize=(8,4))
projection = ccrs.AlbersEqualArea(central_longitude=-100)
ax = plt.axes(projection=projection)
ax.add_feature(...)
ax.add_feature(...)
....

最新更新