#x/usr/bin/ruby # 使用するライブラリの読み込み. (以下 2 行は「決まり文句」.) require "numru/ggraph" include NumRu # NetCDF ファイル "slp.2019.nc" から変数 "slp" を読み, GPhys オブジェクト gp に # 格納 gp = GPhys::IO.open( "slp.2019.nc", "slp" ) #NetCDF ファイル "uwnd.10m.gauss.2019.nc" から変数 "uwnd" を読み、GPhys オブジェクト gpuに格納 #NetCDF ファイル "vwnd.10m.gauss.2019.nc" から変数 "vwnd" を読み、GPhys オブジェクト gpvに格納 gpu = GPhys::IO.open( "uwnd.10m.gauss.2019.nc","uwnd") gpv = GPhys::IO.open( "vwnd.10m.gauss.2019.nc","vwnd") # 画面を開く (open) # 引数の 1 は画面への描画を表す # 2 はファイルへの出力を表す # (デフォルトでは出力は pdf 形式でファイル名は dcl.pdf) # swpsetで出力先をpngファイルに設定 DCL.swpset("ifl",1) DCL.gropn(2) # 描画に関わる各種の指定 DCL.sgpset('lfull',true) # 描画範囲を最大に設定 (ウィンドウのギリギリまで使用) DCL.uzfact(0.6) # フォントサイズ (元の値に対する比率) DCL.sgpset('lclip',true) # 軸範囲を超えた領域を描画しない DCL.glpset('lmiss',true) # 欠損値処理 GGraph.set_axes('xlabelint'=>10) # x 軸にラベルを書く間隔 GGraph.set_axes('ylabelint'=>10) # y 軸にラベルを書く間隔 # 描画画面を準備 # itr の 1 は横軸, 縦軸ともに線形を表す # 2 は横軸が線形軸, 縦軸が対数軸を表す # 3 は横軸が対数軸, 縦軸が線形軸を表す # 4 は横軸, 縦軸ともに対数軸を表す # 10 は正距円筒図法 (いわゆる経度-緯度座標) を表す # viewport は描画可能範囲の中での図の描画範囲を表す # (四隅 [x1,x2,y1,y2] の全体に対する比率) # window は描画する軸の範囲を表す (四隅 [x1,x2,y1,y2] の値) GGraph.set_fig( 'itr'=> 10, 'viewport'=>[0.1,0.8,0.2,0.55], 'window'=>[120,175,10,60] ) # 地図情報の指定. ここでは海岸線を描くように設定. GGraph.set_map( 'coast_world'=>true, 'grid'=>true ) # forを使うことで2019年9月3日~9月12日の6時間ごとの分布を描画 for i in 3..12 for j in 0..18 if j%6 == 0 then time_label = "2019-09-" + i.to_s + " " + j.to_s + ":00:0.0" # トーン (色付け) で描画 # 第一引数は描画するデータの GPhys オブジェクト # 第二引数のtrueは新しい図、false は新しい図ではないことの指定 # 以下の指定の順番は問わない # annotate は図の右上に書かれる情報の表示の有無の指定 # map_axes は正距円筒図法において軸のラベルを書くかどうかの指定 # nlev は使用するトーン (色分け) の数の指定 # contour で等値線の描画 # intervalは等値線の間隔 # color_bar でカラーバーを描画 # tickintv はカラーバーの区切りを指定する。この場合区切りはなし。 GGraph.tone( gp.cut('time'=>DateTime.parse(time_label)), true, 'annotate'=>true, 'map_axes'=>true, 'nlev'=>100, 'min'=>97500, 'max'=>103000, 'clr_max'=>99 ) GGraph.contour( gp, false, 'annotate'=>true, 'map_axes'=>true, 'interval'=>400, 'help'=>false ) GGraph.color_bar( 'tickintv'=>0 ) #ベクトルを描画 #第一引数は描画するベクトルのx成分の GPhys オブジェクト #第二引数は描画するベクトルのy成分の GPhys オブジェクト #第三引数の false は図の重なりを表す # xintv, yintv はx,y方向のデータ間隔 # factor はベクトルの長さを調節する係数 # unit vect はベクトルの標本を表す GGraph.vector( gpu.cut('time'=>DateTime.parse(time_label)), gpv.cut('time'=>DateTime.parse(time_label)), false, "xintv"=>2, "yintv"=>2, "factor"=>5, "unit_vect"=>false ) end end end # 画面を閉じる (close) DCL.grcls