本节提要:如何对数据进行地形缺测。 file=r'E:\aaaa\air.mon.mean.nc' ds=xr.open_dataset(file) lon=ds['lon'] lat=ds['lat'] time=ds['time'] air=ds['air'] air=air.loc['1948-01-01',850,:,:] ac=ax.contourf(lon,lat,air, levels=np.arange(-34,38,4), cmap='Spectral_r', transform=ccrs.PlateCarree()) cb=fig.colorbar(ac,ax=ax,shrink=0.8,pad=0.05) cb.ax.tick_params(labelsize=6) cb.set_ticks(np.arange(-34,38,4)) cb.ax.set_title('气温(℃)',fontsize=8)
b.contourf返回值叠加添加 这个方法比较复杂,不建议大家使用。但是精度比添加shp的方式高。主要办法是,将contourf绘制的等高线图转化,使遮盖阴影与高程相关性较高。 首先,利用nc格式的全球高程数据绘制等值填色图,这个数据在气象家园有分享。那个链接肯定比我分享百度网盘快。 file=r'E:\aaaa\world_geo.nc' ds=xr.open_dataset(file) x=ds['x'] x=x.loc[69.95:101.95] y=ds['y'] y=y.loc[25.95:40.95] z=ds['z'].loc[25.95:40.95,69.95:101.95] ax.contourf(x,y,z,levels=[0,4000,9000],transform=ccrs.PlateCarree()) 这里为了看出青藏高原,我设置了两个等次,下面叠加的时候不用这样,只取4000以上就行了。 然后设置地形遮盖为高zorder,气温为低zorder,就可以起到遮蔽效果。
当然,这都是看使用者的意愿进行遮盖。 二、剖面图缺测 这个摸鱼大佬已经讲过了,我以前也写过一点。这里以上次剖面图的一张图为代表进行简单介绍。 这里可以看出,沿北纬30度的经高图,有一个诡异的直上直下的白图区,中间又突然出现一个上下贯通的水汽富区。不妨查看地形图: 我怀疑左侧诡异白条是青藏高原主体造成的,中间的水汽柱是雅鲁藏布峡谷,右侧白条是横断山脉。 按照摸鱼大佬的方法,我们首先将y轴变为指数型分布的高度轴。因为大气主要质量集中在近地面,越往上空气越稀薄,所以从上往下,气压层密度应该是越来越大的。 主要使用的语句是: ax.set_yscale('symlog') ax.set_yticks([1000,925,850,700,500,300,200,100]) ax.set_yticklabels([1000,925,850,700,500,300,200,100]) ax.set_ylim(100,1000) ax.invert_yaxis() 除了摸鱼大佬的那种方法外,我们还可以使用寄生轴系统,新生成一个y轴,作为高度km轴。然后大致按照100hPa约在16公里处设置范围,并提取地图数据绘制。由于我们是推算平均海平面与100hPa距离的方法,不如摸鱼的公式计算精确,但气压层叠地形本来误差就大,只是一个大概的说明即可。
还是能看出,我们之前的推测基本正确,青藏高原沿着诡异白区贴合分布。然后使用fill_between命令将地形上色。 ax_h.fill_between(x,y1=z*0.001,y2=0,where=(z>0),facecolor='grey') |
|