#!/usr/bin/ruby
# 使用するライブラリの読み込み. (以下 2 行は「決まり文句」.)
require "numru/ggraph"
include NumRu

# NetCDF ファイル "dlwrf.sfc.gauss.day.ltm.1991-2020.nc" から変数 "dlwrf" を読み, GPhys オブジェクト gp 1に
# NetCDF ファイル "ulwrf.ntat.gauss.day.ltm.1991-2020.nc" から変数 "ulwrf" を読み, GPhys オブジェクト gp 2に
# 格納
gp1 = GPhys::IO.open( "dlwrf.sfc.gauss.day.ltm.1991-2020.nc", "dlwrf" )
gp2 = GPhys::IO.open( "ulwrf.ntat.gauss.day.ltm.1991-2020.nc", "ulwrf" )

# 画面を開く (open)
#   引数の 1 は画面への描画を表す
#          2 はファイルへの出力を表す
#            (デフォルトでは出力は pdf 形式でファイル名は dcl.pdf)
DCL.swpset("ifl",1)
DCL.gropn(2)

# 描画画面を準備
#   itr の 1 は横軸, 縦軸ともに線形を表す
#          2 は横軸が線形軸, 縦軸が対数軸を表す
#          3 は横軸が対数軸, 縦軸が線形軸を表す
#          4 は横軸, 縦軸ともに対数軸を表す
GGraph.set_fig( 'itr'=> 1 )

#  for を使うことで, 2023 年 1 月 1 日, 2 月 1 日, 3 月 1 日, ... の一か 月ごとの分布を描画
for i in 1..12
  #  1991年から2020年の月ごとの平均値において 1 月 1 日から12 月 1 日までの一か月おきの日付の文字列を生成
  #   ruby では文字列を + で結合することができる
  #   i は元々整数型変数.
  #   + を使って結合するためには文字列でなければならないため,
  #   to_s メソッド (s は string の略) を使って文字型変数に変換している.

  time_label = "0001-" + i.to_s + "-01 00:00:0.0"
  # 繰り返し回数, 日付を画面に表示
  print i, " : ", time_label, "\n"
  #  GPhys オブジェクト gp 1内の変数 "dlwrf" とgp2内の変数ulwrf"から
  # 経度(lon)軸に対して平均する
  #   第一引数は描画するデータの GPhys オブジェクト
  #   第二引数の true は新しい図であることの指定
  #   以下の指定の順番は問わない
  #  min は描画するラインの最小値の指定
  #  max は描画するラインの最大値の指定
  #   GPhys オブジェクト gp から time_label を用いて切り出していることに注意

  GGraph.line( gp1.cut('time'=>DateTime.parse(time_label)).mean('lon'), true,'min'=>0, 'max'=>500 )
  #   第二引数は重ね書きするため false
  #   index のオプションの 20 は赤線を示す
  GGraph.line( gp2.cut('time'=>DateTime.parse(time_label)).mean('lon'), false,'min'=>0, 'max'=>500,'index'=>20)
end

#  画面を閉じる (close)
DCL.grcls
