配列の一部分だけを作画するにはどうしたらよいのでしょう? これまでと同じ
データで, その一部分だけを描くことを考えてみましょう(U2D4).
経度80から320,
緯度
-60から60の
部分だけを描くことにします. 6行めのパラメータ文で与えているように, 格
子点の範囲はx方向に9 ≦ i ≦ 33,
y方向に7 ≦ j ≦ 31 となります. ウインドウの設定を
この範囲とし, Contour.draw メソッドで等高線図を描くのですが, ここで一工夫が必要です. 最初の引数としては,
この矩形領域の左下に対応する配列要素 P(kxmn,kymn) を陽に与えることによって配列の一部分だけを作画することができます.
# # u2d4.rb require "narray" require "numru/advanceddcl" include NumRu::AdvancedDCL include NMath nx = 37 ny = 37 xmin = 0 xmax = 360 ymin = -90 ymax = 90 drad = PI / 180 kxmn = 9 kxmx = 33 kymn = 7 kymx = 31 p = NArray.sfloat(nx, ny) alon = NArray.sfloat(nx) alat = NArray.sfloat(ny) #-- data --- for i in 0..nx-1 alon[i] = xmin + (xmax-xmin)*i/(nx-1).to_f end for j in 0..ny-1 alat[j] = ymin + (ymax-ymin)*j/(ny-1).to_f end for j in 0..ny-1 slat = sin(alat[j]*drad) for i in 0..nx-1 p[i,j] = 3*sqrt(1-slat**2)*slat*cos(alon[i]*drad) - 0.5*(3*slat**2-1) end end #-- graph --- Dev.open Frame.new Fig.window = [alon[kxmn-1], alon[kxmx-1], alat[kymn-1], alat[kymx-1]] Fig.viewport = [0.2, 0.8, 0.2, 0.8] Fig.transnum = 1 Axis.draw Contour.draw(p[(kxmn-1)..(kxmx-1), (kymn-1)..(kymx-1)]) Dev.closePROGRAM U2D4