#!/usr/bin/ruby # 使用するライブラリの読み込み. (以下 2 行は「決まり文句」.) require "numru/ggraph" include NumRu # NetCDF ファイル "sst.mon.mean.nc" から変数 "sst" を読み, GPhys オブジェクト gp1 に格納 # NetCDF ファイル "sst.mon.ltm.1981-2010.nc" から変数 "sst" を読み, GPhys オブジェクト gp2 に格納 gp1 = GPhys::IO.open("sst.mon.mean.nc","sst") gp2 = GPhys::IO.open("sst.mon.ltm.1981-2010.nc","sst") #範囲を指定 gp1 = gp1.cut('lon'=>-150..-90,'lat'=>-5..5) gp2 = gp2.cut('lon'=>-150..-90,'lat'=>-5..5) # 画面を開く (open) # 引数の 1 は画面への描画を表す # 2 はファイルへの出力を表す # (デフォルトでは出力は pdf 形式でファイル名は dcl.pdf) DCL.swpset("ifl",1) DCL.gropn(2) # 描画に関わる各種の指定 DCL.uzfact(0.6) # フォントサイズ (元の値に対する比率) DCL.sgpset('lclip',true) # 軸範囲を超えた領域を描画しない DCL.glpset('lmiss',true) # 欠損値処理 # 描画画面を準備 # itr の 1 は横軸, 縦軸ともに線形を表す # 2 は横軸が線形軸, 縦軸が対数軸を表す # 3 は横軸が対数軸, 縦軸が線形軸を表す # 4 は横軸, 縦軸ともに対数軸を表す GGraph.set_fig('itr'=> 1) # for を使うことで, 1997 年 1 月 1 日, 2 月 1 日, 3 月 1 日, ... の一か 月ごとの分布を描画 for i in 1..12 # 1997 年 1 月 1 日から 12 月 1 日までの一か月おきの日付の文字列を生成 time_label1 = "1997-" + i.to_s + "-01 00:00:0.0" time_label2 = "0001-" + i.to_s + "-01 00:00:0.0" # 繰り返し回数, 日付を画面に表示 print i, " : ", time_label1, "\n" print i, " : ", time_label2, "\n" # 折れ線グラフを描画 # 第一引数は描画するデータの GPhys オブジェクト # 第二引数の true は新しい図であることの指定 # 第二引数のfalseは重ね書きすることの指定 # indexオプションの20は赤線で描写 # min は描画する最小値の指定 # max は描画する最大値の指定 # GPhys オブジェクト gp から time_label を用いて切り出していることに注意 GGraph.line(gp1.cut('time'=>DateTime.parse(time_label1)), true,'index'=>20,'min'=>25, 'max'=>30) GGraph.line(gp2.cut('time'=>DateTime.parse(time_label2)), false,'min'=>25, 'max'=>30) end # for を使うことで, 1998 年 1 月 1 日, 2 月 1 日, 3 月 1 日, ... の一か 月ごとの分布を描画 for j in 1..12 # 1998 年 1 月 1 日から 12 月 1 日までの一か月おきの日付の文字列を生成 time_label3 = "1998-" + j.to_s + "-01 00:00:0.0" time_label4 = "0001-" + j.to_s + "-01 00:00:0.0" # 繰り返し回数, 日付を画面に表示 print j, " : ", time_label3, "\n" print j, " : ", time_label4, "\n" # 折れ線グラフを描画 # 第一引数は描画するデータの GPhys オブジェクト # 第二引数の true は新しい図であることの指定 # 第二引数のfalseは重ね書きすることの指定 # indexオプションの20は赤線で描写 # min は描画する最小値の指定 # max は描画する最大値の指定 # GPhys オブジェクト gp から time_label を用いて切り出していることに注意 GGraph.line(gp1.cut('time'=>DateTime.parse(time_label3)), true,'index'=>20,'min'=>25, 'max'=>30) GGraph.line(gp2.cut('time'=>DateTime.parse(time_label4)), false,'min'=>25, 'max'=>30) end # 画面を閉じる (close) DCL.grcls