次のプログラム STEP1 では, Plot.draw メソッドを用いて4種類       
の折れ線を一枚の図に重ね書きしてみましょう. まず,
Fig.inclpointメソッド       
を4回呼んで x と y0, y1, y2, y3 のデータ       
のなかから x と y の最大値と最小値を見つけ, 「おまかせ」で正規化変       
換を確定して, 座標軸も描きます.       
       
       
       
       
さて, 折れ線の描画ですが, 折れ線には, 線種と線の太さの2つの属性があり       
ます. Plot モジュールのパラメタlinetype と lineindex でこれらの属性を変更       
でき, Plot.draw メソッドで折れ線を描きます. 属性を陽に変更しなければ,        
それぞれの初期値(デフォルト)がそのまま使われます.       
       
       
       
このプログラム例では, まず初期値のまま (x,y0) の折れ線を描き, 次 に少し線を太くして, 破線で (x,y1) を, 点線で (x,y2) を, そ して1点鎖線で (x,y3) を描いています.
X, Y (実数型) 折れ線を結ぶ点の(x,y)座標値 を与える配列. 
1:実線, 2:破線, 3:点線, 4:1点鎖線. (初期値は1)
1から大きくなるにつれて太くなる. (初期値は1)
Plot.draw で折れ線を描く際, その属性は予め指定しておくと描画 後も有効となりますが、Plot.drawの引数として属性指定を行うことも可能で す。その際、設定された属性はその描画のみ有効なものとなります。
 
  
  
step1.rb: frame1      
      
  
#
# step1.rb
require "narray"
require "numru/advanceddcl"
include NumRu::AdvancedDCL
include NMath
nmax = 201
imax = 5
len_2 = 5
x  = 0
y0 = 1
y1 = 2
y2 = 3
y3 = 4
z1 = NArray.sfloat(nmax, len_2)
# 2nd Dimension
#    0: x, 1: y0, 2: y1, 3:y2 4: y3    in step1.f
a = []
#-- data ----
for m in 1..imax
  tm = (2*m - 1)*PI
  a[m-1] = (-1.0)**m * 2/tm
end
for n in 1..nmax
  z1[n-1,x] = 1.0*(n-1)/(nmax-1)
  tn = 2*PI*z1[n-1,x]
  z1[n-1,y0] =
    if (tn < PI/2 || tn >= PI*3/2) then 0.0 else 1.0 end
  z1[n-1,y1] = 0.5 + a[0]*cos(tn)
  z1[n-1,y2] = 0.5
  z1[n-1,y3] = 0.5
  for k in 1..imax
    tk = 2*k - 1
    tc = a[k-1]*cos(tk*tn)
    z1[n-1,y2] = z1[n-1,y2] +
      if (k <= 3) then tc else 0 end
    z1[n-1,y3] = z1[n-1,y3] + tc
  end
end
#-- graph ----
Dev.open
Frame.new
x  = z1[true,x]
y0 = z1[true,y0]
y1 = z1[true,y1]
y2 = z1[true,y2]
y3 = z1[true,y3]
Fig.inclpoint(x, y0)
Fig.inclpoint(x, y1)
Fig.inclpoint(x, y2)
Fig.inclpoint(x, y3)
Axis.title('FREQUENCY', '/DAY', 'RESPONSE', '')
Axis.draw
Plot.draw(x, y0)
Plot.lineindex = 3
Plot.draw(x, y1, "linetype"=>2)
Plot.draw(x, y2, "linetype"=>3)
Plot.draw(x, y3, "linetype"=>4)
Dev.close
 
PROGRAM STEP1