python绘制剖面图_Python气象绘图教程—(十九)剖面图

本节提要:简要谈谈地形剖面图、纬度高度剖面图、时间纬度图的绘制方法。

提要中提到的这几种图形都是在气象上比较常用的,地形剖面主要研究地貌对降雨、气流的影响作用;纬度高度剖面图可以用来分析降雨的某些条件,如湿层深厚、上干下湿、风向风速等;时间纬度图研究某个固定经度上的值随时间的演变(这是和大气环流一般自西向东相匹配的,所以时间经度图比较少见)。

一、地形剖面图

绘制地形剖面图之前,需要了解自己使用的地形文件的格式与属性。我使用的是从气象家园巨佬Masterpiece处白嫖来的地形文件。文件为.nc格式,需要使用Python中的netCDF4或者xarray库包来读取。

首先我们先来读取一下文件,并print出来,看看其属性:

import numpy as npimport matplotlib.pyplot as pltimport matplotlib as mplimport cartopy.crs as ccrsimport cartopy.feature as cfeaturefrom cartopy.io.shapereader import Reader as shpreaderimport xarray as xrplt.rcParams['font.sans-serif']=['SimHei']#显示中文filename=r'E:\aaaa\world_geo.nc'#地形文件储存地址f=xr.open_dataset(filename)#读取文件print(f)#打印其属性

可以看出这个文件主要由x,y,z三个变量组成。

其中x表示经度,将全球东西360经度分为了10800刻度,相当于一个经度被分为30份;y表示纬度,将全球南北180纬度分为了5400份,也是将一个纬度分为30份。那么这个nc文件的精度就是0.0333°×0.0333°,由于是地形文件,显然要比常用的再分析资料精度更高;z表示高度,也就是地形。可以看出,z仅仅与y,x有关,且第一相关量为y而不是x,这与我们习惯不同,在取值时需注意。

因为是二维的数据,那么按照绘制平面填色图的ax.contourf命令是可以直接读取数据绘图的。接下来我们先绘制一个平面的地形图试试成色:

import numpy as npimport matplotlib.pyplot as pltimport matplotlib as mplimport cartopy.crs as ccrsimport cartopy.feature as cfeaturefrom cartopy.io.shapereader import Reader as shpreaderimport xarray as xrplt.rcParams['font.sans-serif']=['SimHei']#显示中文#######################################filename=r'E:\aaaa\world_geo.nc'#地形文件地址proj=ccrs.PlateCarree()#缩写投影extent=[70,140,5,75]#绘图范围def truncate_colormap(cmap, minval=0.0, maxval=1.0, n=128):new_cmap = mpl.colors.LinearSegmentedColormap.from_list('trunc({n},{a:.2f},{b:.2f})'.format(n=cmap.name,a=minval, b=maxval),cmap(np.linspace(minval, maxval, n)))return new_cmap#新的等高图色条,比较符合地理地形图的样子,来源气象家园巨佬############################################f=xr.open_dataset(filename)#读取文件lon=f['x'][:]#将文件中的x变量赋值为经度lat=f['y'][:]#赋值为纬度height=f['z'][:]#将z变量赋值为高度fig=plt.figure(figsize=(10,9),dpi=500)ax=fig.add_subplot(projection=proj)cmap_new = truncate_colormap(plt.cm.terrain, 0.23, 1.0) #截取colormap,要绿色以上的(>=0.23)cmap_new.set_under([198/255,234/255,250/255]) #低于0的填色为海蓝le

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值