微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将颜色条和标题添加到子图中?

如何解决如何将颜色条和标题添加到子图中?

如何使用 for 命令为每个图添加颜色条和标题,就像这张图片reference_figure

import numpy as np
import matplotlib.pyplot as plt
import wradlib as wrl
import pyart
import xarray as xr

ds = xr.open_dataset('MDV-20180602-101927-PPIVol.nc')

def sweep(i):
    si = ds.sweep_start_ray_index.values
    ei = ds.sweep_end_ray_index.values
    return slice(si[i],ei[i]+1)

i=0
x = ds.range * np.sin(np.deg2rad(ds.azimuth[sweep(i)]))
y = ds.range * np.cos(np.deg2rad(ds.azimuth[sweep(i)]))

fig,ax = plt.subplots(3,2,figsize=(12,15))
ax = ax.flatten()

variables = ['reflectivity',"veLocity",'zdr','rhohv','phidp','spectral width']

ref = ax[0].pcolormesh(x/1e3,y/1e3,ds['DBZH'][sweep(i)].T,cmap='pyart_NWSRef')
vel = ax[1].pcolormesh(x/1e3,ds['VELH'][sweep(i)].T,cmap='pyart_NWsvel')
zdr = ax[2].pcolormesh(x/1e3,ds['ZDR'][sweep(i)].T,cmap='pyart_RefDiff',vmin=-1,vmax=8)
rho = ax[3].pcolormesh(x/1e3,ds['RHOHV'][sweep(i)].T,vmin=0.5,vmax=1.05)
phidp = ax[4].pcolormesh(x/1e3,ds['PHIDP'][sweep(i)].T,cmap='pyart_Wild25',vmin=-180,vmax=180)
width = ax[5].pcolormesh(x/1e3,ds['WIDTHH'][sweep(i)].T,cmap='pyart_NWS_SPW')

for myax in ax:
    [myax.plot(k * np.cos(ds.azimuth[sweep(i)] * np.pi / 180),k * np.sin(ds.azimuth[sweep(i)] * np.pi / 180),'k-',linewidth=1,alpha=0.5) for k in [25,75,125]]
    myax.set_aspect('equal')

fig.tight_layout()
plt.show()

输出Output

变量是应该使用的标题

解决方法

要获得您想要的标题,您只需在 for 循环中遍历列表即可。所以它应该看起来像下面的变量名。你可以做同样的事情来指定你的其他轴标签。颜色条的工作方式相同,但您需要为每个图使用名称。

variables = ['reflectivity',"velocity",'zdr','rhohv','phidp','spectral width']

subplot_= [ref,vel,zdr,rho,phidp,width)

index=0

for myax in ax:
    [myax.plot(k * np.cos(ds.azimuth[sweep(i)] * np.pi / 180),k * np.sin(ds.azimuth[sweep(i)] * np.pi / 180),'k-',linewidth=1,alpha=0.5) for k in [25,75,125]]
    myax.set_aspect('equal')

    myax.set_title(variables[index]) #Create a title on the axis

    plt.colorbar(subplot_[index],ax=myax)

    index+=1 #Add 1 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。