6.2 トーン付き等高線図

メソッド Tone.draw を呼ぶだけで, とりあえず負の領域にトーンをつ けることができます. 次のプログラム例 U2D2 は, U2D1 の結果 に加えて, 負の領域に斜線のハッチをつけます. ここで, Tone モジュールの パラメタ lsoftf.TRUE. に設定しています. これを .FALSE.(初期値) で描く と, 出力装置によっては先に描かれた図形が消えてしまうことがあります. 'LSOFTF' の設定を変えたり, Tone.draw を呼ぶ順序を Axis.draw の前にしたりして, 結果がどのようになるか確かめてみましょう. ま た, この例では, ビューポートを陽に設定して長方形にしている点にも注意し て下さい.

#
# u2d2.rb

require "narray"
require "numru/advanceddcl"

include NumRu::AdvancedDCL
include NMath

nt = 51
nz = 21
tmin = 0.0
tmax = 5.0
zmin = 20.0
zmax = 50.0
dt = (tmax-tmin)/(nt-1)
dz = (zmax-zmin)/(nz-1)

u = NArray.sfloat(nt, nz)

#-- data ----
for j in 0..nz-1
  zj = j*dz
  uz = exp(-0.2*zj)*(zj**0.5)
  for i in 0..nt-1
    ti = i*dt-2.0*exp(-0.1*zj)
    u[i,j] = uz*sin(3.0*ti)
  end
end

#-- graph ----
Dev.open
Tone.lsoftf = true
Frame.new

Fig.window = [tmin, tmax, zmin, zmax]
Fig.viewport = [0.2, 0.9, 0.4, 0.8]

Axis.title('TIME', 'YEAR', 'HEIGHT', 'km')
Axis.draw

Contour.draw(u)
Tone.draw(u)

Dev.close

PROGRAM U2D2

\resizebox{10cm}{!}{\includegraphics{u2d/u2d2.eps}}
u2d2.rb: frame1