4次元データ(T,Z,Y,X)の時間と高度を指定し、2次元断面(スカラー)を描画するためのpython(ver2)
version2: xarrayでデータの切り出しだけ行い、axesオブジェクトで描画する
version1がダメなところは、colorscaleの調整ができないことである。
特にcartopyのように地図投影法と組み合わせた場合、図のサイズと同じサイズと
なるようにcolorscaleが調整してくれる機能がうまくいかない。特に縦横比が
横の方が大きい図になると、カラースケールが図の縦の長さよりも大幅に長くなり
美しくない。これをversion1では制御できない。
projectionを利用しない場合は自動調整が可能(参考HP1や参考HP2、参考HP3が参考となる)
projectionを利用する場合は、参考HP4が示すようにshrinkをplt.colorbarの中で設定し調整する必要がある。
図の縦横比を読み取り、半自動でshrinkの値を決めるようにしたプログラムがversion2である。
必要に応じて、軸の説明、図のタイトル、単位の説明などを変更する必要があります。そこは各自の好みにお任せします。
プログラムのダウンロードはこちら main_ver2.py(40)
プログラムの内容(version1との差分だけを記載)
Aspectratio = Fysiz/Fxsiz print("Aspectratio=",Aspectratio) if Aspectratio > 1.0: # tatenaga shrink_v = 0.7 elif Aspectratio > 0.5: shrink_v = 0.6 elif Aspectratio > 0.2: shrink_v = 0.5
fig = plt.figure(figsize=(Fxsiz,Fysiz)) # configure for a single figure in the whole figure domain ax = fig.add_subplot(111,projection= ccrs.PlateCarree()) contourf = ax.contourf( data["LON"],data["LAT"],V2D,transform=ccrs.PlateCarree(), cmap="rainbow",extend="both",levels=clevels )
plt.colorbar(contourf,shrink=shrink_v, pad= 0.03)
使い方 (ver1と変わらない)
python main_ver2.py -h
で必要な引数などが表示される。
python main_ver2.py sample.nc U python main_ver2.py sample.nc U -t 0 -z 2 -O hoge.ps
contourf = ax.contourf( data["LON"],data["LAT"],V2D,transform=ccrs.PlateCarree(), cmap="rainbow",extend="both",levels=clevels ) plt.colorbar(contourf,shrink=shrink_v, pad= 0.03)
のように、xarrayが切り出したLON,LAT,V2Dを使って、axesオブジェクトのcontourfを使って作図し、
戻り値のオブジェクトをplt.colorbarに引き継ぎ、凡例を記載している。colorbarでいろいろと調整ができる。