#!/usr/bin/ruby # 使用するライブラリの読み込み. (以下 2 行は「決まり文句」.) require "numru/ggraph" include NumRu # NetCDF ファイルから東西風と南北風の変数を読み, GPhys オブジェクトに格納 gpu7 = GPhys::IO.open( "uwnd.2023.nc", "uwnd" ) gpv7 = GPhys::IO.open( "vwnd.2023.nc", "vwnd" ) gpuA = GPhys::IO.open( "uwnd.mon.ltm.1991-2020.nc", "uwnd" ) gpvA = GPhys::IO.open( "vwnd.mon.ltm.1991-2020.nc", "vwnd" ) #期間を7月に限定して平均 gpu7 = gpu7.cut('time' => DateTime.parse("2023-07-01 00:00:0.0")..DateTime.parse("2023-07-31 00:00:0.0")).mean('time') gpv7 = gpv7.cut('time' => DateTime.parse("2023-07-01 00:00:0.0")..DateTime.parse("2023-07-31 00:00:0.0")).mean('time') #全期間で平均 gpuA = gpuA.mean('time') gpvA = gpvA.mean('time') #高度を指定 gpu7 = gpu7.cut('level' => 400) gpv7 = gpv7.cut('level' => 400) gpuA = gpuA.cut('level' => 400) gpvA = gpvA.cut('level' => 400) #2023年7月を気候値から引く u = gpuA - gpu7 v = gpvA - gpu7 # 画面を開く (open) # 引数の 1 は画面への描画を表す # 2 はファイルへの出力を表す # (デフォルトでは出力は pdf 形式でファイル名は dcl.pdf) 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'=>30) # x 軸にラベルを書く間隔 GGraph.set_axes('ylabelint'=>30) # y 軸にラベルを書く間隔 # 描画画面を準備 # itr の 1 は横軸, 縦軸ともに線形を表す # 2 は横軸が線形軸, 縦軸が対数軸を表す # 3 は横軸が対数軸, 縦軸が線形軸を表す # 4 は横軸, 縦軸ともに対数軸を表す GGraph.set_fig( 'itr'=> 1, 'viewport'=>[0.1,0.9,0.2,0.55], 'window'=>[0,360,-90,90] ) # ベクトルを描画 # 第一引数は描画するベクトルの x 成分の GPhys オブジェクト # 第二引数は描画するベクトルの y 成分の GPhys オブジェクト # 第三引数の true は新しい図を表す GGraph.vector( u, v, true, "xintv"=>2, "yintv"=>2, "factor"=>2, "unit_vect"=>true ) # 画面を閉じる (close) DCL.grcls