#!/usr/bin/ruby # coding: utf-8 # 使用するライブラリの読み込み. (以下 2 行は「決まり文句」.) require "numru/ggraph" include NumRu # NetCDF ファイル "air.2020.nc" から変数 "air" を読み, GPhys オブジェクト gp に # 格納 gp = GPhys::IO.open( "air.2020.nc", "air" ) # 画面を開く (open) # 引数の 1 は画面への描画を表す DCL.swpset("ifl",1) # 引数の 2 はファイルへの出力を表す # (デフォルトでは出力は pdf 形式でファイル名は dcl.pdf) # pngファイルへと保存 DCL.gropn(2) # (lon)軸に対して平均する gp = gp.mean('lon') # for を使うことで, 2020年 1月, 2月, 3月, ... の一か 月ごとの分布を描画 for i in 1..12 # 2020 年 1 月から 12 月までの一か月おきの日付の文字列を生成 # ruby では文字列を + で結合することができる # i は元々整数型変数. # + を使って結合するためには文字列でなければならないため, # to_s メソッド (s は string の略) を使って文字型変数に変換している. time_start = "2020-" + i.to_s + "-01 00:00:0.0" # 1ヶ月ごとに時間平均するため, if 文を使う # 繰り返し回数, 日付を画面に表示 print i, " : ", time_start,"\n" # 12月のみ時間平均する範囲の終わりを2021-01-01 00:00:0.0に設定 if i == 12 then time_end = "2021-01-01 00:00:0.0" # その他の月は, 範囲の終わりを次の月の00:00:0.0に設定 else time_end = "2020-" + (i+1).to_s + "-01 00:00:0.0" end # 描画画面を準備 # itr の 1 は横軸, 縦軸ともに線形を表す # 2 は横軸が線形軸, 縦軸が対数軸を表す # 3 は横軸が対数軸, 縦軸が線形軸を表す # 4 は横軸, 縦軸ともに対数軸を表す GGraph.set_fig( 'itr'=> 1 ) # 月の数字が1桁か2桁かで場合分けをする. # これは図のタイトルに表示する日付がきれいに表示されるようにするため. if i <= 9 then # トーン (色付け) で描画 # 第一引数は描画するデータの GPhys オブジェクト # Cutメソッドで時間を切り出し, meanメソッドで平均している. # DateTime.parseメソッドを使うと正しく時間を指定することができる. # 第二引数の true は新しい図であることの指定 # annotate は図の右上に書かれる情報の表示の有無の指定 # nlev は使用するトーン (色分け) の数の指定 # min は描画するトーンの最小値の指定 # max は描画するトーンの最大値の指定 # title は図のタイトルの指定 GGraph.tone( gp.cut('time'=>DateTime.parse(time_start)..DateTime.parse(time_end)).mean('time'), true, 'annotate'=>true, 'nlev'=>60, 'min'=>180, 'max'=>320, 'title'=>"mean Daily Air temperature (2020/0" + i.to_s + ")" ) # カラーバーを描画 GGraph.color_bar else # トーン (色付け) で描画 # 第一引数は描画するデータの GPhys オブジェクト # Cutメソッドで時間を切り出し, meanメソッドで平均している. # DateTime.parseメソッドを使うと正しく時間を指定することができる. # 第二引数の true は新しい図であることの指定 # annotate は図の右上に書かれる情報の表示の有無の指定 # nlev は使用するトーン (色分け) の数の指定 # min は描画するトーンの最小値の指定 # max は描画するトーンの最大値の指定 # title は図のタイトルの指定 GGraph.tone( gp.cut('time'=>DateTime.parse(time_start)..DateTime.parse(time_end)).mean('time'), true, 'annotate'=>true, 'nlev'=>60, 'min'=>180, 'max'=>320, 'title'=>"mean Daily Air temperature (2020/" + i.to_s + ")" ) # カラーバーを描画 GGraph.color_bar end end # 画面を閉じる (close) DCL.grcls