7.2 描画領域の変更

前章までの例では, 用紙の形は長方形なのに, そこに最大内接する正方形の領 域をとって [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::grcls

 
program lay2

\resizebox{10cm}{!}{\includegraphics{layout/lay2.eps}}
lay2.rb: frame1