作成:1993430s 山下雅生
私は2020年の東西平均した子午面温度分布の季節変化について、図を作成するスクリプトを作成した。
利用したのはNCEP/NCAR Reanalysisの月平均気温データである。
#!/usr/bin/ruby
require "numru/ggraph"
include NumRu
gp = GPhys::IO.open("air.mon.mean.nc","air") #月平均気温のデータを使用
gp = gp.mean('lon') #経度方向で平均
DCL.swpset("ifl",1) #pngで出力
DCL.gropn(2) #ファイル出力の指定
GGraph.set_fig('itr'=>1) #両軸を線形で描画
for i in 1..12 #1月~12月
tlabel = "2020-" + i.to_s + "-01 00:00:0.0" #日時の指定
print i, " : " , tlabel, "\n" #出力時の進捗確認に利用
gpm = gp.cut('time'=>DateTime.parse(tlabel)) #指定した日時で切り取り
GGraph.tone(gpm,true,'min'=>-90,'max'=>30) #カラーマップの描画
GGraph.contour(gpm,false) #等温線の描画
GGraph.color_bar #カラーバーの描画
end
DCL.grcls
air.mon.mean.nc
で保存する。convert -delay 100 -loop 0 dcl_*.png result1.gif
を実行すると、12枚のpngファイルを1つのgifに変換できる。
*ここでは、概ね圧力200mbar以下の領域を高層、600mbar以上の領域を低層と呼称する。
問題1と同じデータを使い、東経135度、北緯35度における1980~2020年の、1980年を基準として規格化した8月の圧力-温度分布を描画した。
#!/usr/bin/ruby
require "numru/ggraph"
include NumRu
gp = GPhys::IO.open("air.mon.mean.nc","air") #月平均気温のデータ
gp = gp.cut('lon'=>135,'lat'=>35) #東経135度、北緯35度を選択
DCL.swpset("ifl",1) #pngで出力
DCL.gropn(2)
GGraph.set_fig('itr'=>1) #両軸線形グラフ
yr = 1980 #年の設定
id = 10 #線の色の設定
#基準とする1980年の温度分布
gp80 = gp.cut('time'=>DateTime.parse(yr.to_s + "-08-01 00:00:0.0"))
#1980年のデータで規格化された1980年の温度分布(つまり1)
gpy = gp.cut('time'=>DateTime.parse(yr.to_s + "-08-01 00:00:0.0")) / gp80
GGraph.line(gpy,true,"exchange"=>true,"min"=>0.5,"max"=>2)
for i in 1..4 #1990~2020
yr = yr + 10 #先のデータの十年後
id = id + 10 #線の色の変更:黒→赤→緑→青→黄
#1980年で規格化された各年の温度分布
gpy = gp.cut('time'=>DateTime.parse(yr.to_s + "-08-01 00:00:0.0")) / gp80
GGraph.line(gpy,false,"exchange"=>true,"index"=>id,"min"=>0.5,"max"=>2)
end
DCL.grcls
air.mon.mean.nc
)を同一フォルダに置く