国立研究開発法人防災科学技術研究所 水・土砂防災研究部門
国立研究開発法人防災科学技術研究所 水・土砂防災研究部門
トップ 一覧 検索 ヘルプ RSS ログイン

Pytyon(描画関係メモ)_version2

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

このプログラムを使った作図例はこちら
VER2.png

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でいろいろと調整ができる。