前章までの例では, 用紙の形は長方形なのに, そこに最大内接する正方形の領 域をとって [0,1]×[0,1] のV-座標系を考え, その中だけに図を描いてき ました. これに対して, 紙一杯に図を描く例が次のプログラム lay2 で す. 物理的な描画範囲一杯に作画したい時は, sglset ルーチンを用い てレイアウトに関する論理型内部変数 'LFULL' を .true. にし ます. 長辺がV-座標系で[0,1]となりますから, ここではビューポートを (0.15,0.95,0.15,0.65) として物理的な作画範囲に納まるようにとって います. この範囲は出力装置によって異なりますので, プログラムによっては 出力する際にエラーを起こす可能性もあります. 御注意下さい.
# lay2.rb require "narray" require "numru/dcl" include NumRu include Math nmax = 401 xmin = 1600.0 xmax = 2000.0 x = NArray.sfloat(nmax) y = NArray.sfloat(nmax) #-- data ---- x.indgen(xmin, (xmax-xmin)/(nmax-1)) y0 = 0.5 for n in 0..nmax-1 y[n] = 5.0*y0 + 10.0 y0 = 3.7*y0*(1.0-y0) end #-- graph ---- iws = (ARGV[0] || (puts ' WORKSTATION ID (I) ? ;'; DCL::sgpwsn; gets)).to_i DCL::gropn iws DCL::sglset('LFULL', true) DCL::grfrm DCL::grswnd(xmin, xmax, 11.0, 15.0) DCL::grsvpt(0.15, 0.95, 0.15, 0.65) DCL::uspfit DCL::grstrf DCL::ussttl('TIME', 'YEAR', 'TEMPERATURE', 'DEG') DCL::usdaxs DCL::uulin(x, y) DCL::grclsprogram lay2
lay2.rb: frame1