天天看点

python 对数坐标_Python气象数据处理与绘图(8):纬高图(对数坐标轴)

鸽了好几天,一直没想好更新什么,翻了下以前画过的一些图,突然想到纬高图也是气象研究中心很常见的一类图型,通常用于分析高低空的环流配置,垂直运动等等,那么今天就更新一下。

纬高图一般指的是纵轴是高度轴的图,横轴可以是纬度,经度,时间等等,用于同时分析垂直方向的环流异常等等,我只是叫纬高图比较顺嘴。

python 对数坐标_Python气象数据处理与绘图(8):纬高图(对数坐标轴)

1979年9月北半球温度的纬度-高度分布图

我准备的数据是ERA-Interim再分析资料的1979年9月份的温度数据,垂直高度37层,从1000hPa-1hPa,纬度90°N-0°,经度为0-360°。具体如下:

f = xr.open_dataset('t.nc')

t = f['t'].loc['1979-09-01']

high = t.coords['level']

lat = t.coords['latitude']

python 对数坐标_Python气象数据处理与绘图(8):纬高图(对数坐标轴)

数据信息

首先对经度维求平均,使数据变为纬度-高度的2维数据。

t = np.array(t).mean((2))-273.15

#print(t)

#(37, 91)

然后就直接用来画图了,按常规操作来画的话,问题出现了:

fig1 = plt.figure(figsize=(12,8))

f1_ax1 = fig1.add_axes([0.1, 0.1, 0.5, 0.5])

f1_ax1.set_xticks(np.arange(0,120,30))

# f1_ax1.set_yscale('symlog')

c = f1_ax1.contourf(lat,level,t, extend = 'both',levels = np.arange(-80,20,4),cmap=plt.cm.RdBu_r)

f1_ax1.set_xticklabels([r'0$^\degree$',r'30$^\degree$N', r'60$^\degree$N', r'90$^\degree$N'])

python 对数坐标_Python气象数据处理与绘图(8):纬高图(对数坐标轴)

image.png

纵轴是反着的!

不要紧,加一条这个就好了。翻转y轴!

f1_ax1.invert_yaxis()

进一步,我们想将垂直轴设置成对数坐标轴,只需再添加:

f1_ax1.set_yscale('symlog')

就OK了