異なる大きさの図形を並べる

大きい図形の隣に小さな図形を並べる時には, DclSetViewportを使って陽にビュー ポートを設定することになる。下のプログラムを見ると、まず, ビューポートを (0.15,0.45,0.65,0.95) として, 描画範囲 の左上に正方形の図を描いている。次に, DclNewFigルーチンを呼んで2番めの図を描くために必要な初期化をする。DclNewFrameと違って, 改ページはされない。そして, ビューポートを (0.15,0.95,0.1,0.5) として下の図を描いている。こうすれば縦横比が1:2の 長方形の図となる。

layout03.f90
program layout03

  use dcl

  integer,parameter :: nmax=400
  real :: x(nmax), y(nmax)

!-- データ 1 ----
    dt = 2.*3.14159 / (nmax-1)

    do n=1,nmax
      t = dt*(n-1)
      x(n) = 5.*sin(4.*t)
      y(n) = 5.*cos(5.*t)
    end do

!-- グラフ 1 ----
    call DclOpenGraphics()
    call DclNewFrame

    call DclSetWindow(  -6.,   6.,  -6.,   6. )
    call DclSetViewPort( 0.15, 0.45, 0.65, 0.95 )
    call DclSetTransNumber( 1 )
    call DclSetTransFunction

    call DclSetTitle( 'x1', 'y1', '', '' )
    call DclDrawScaledAxis

    call DclDrawLine( x, y )

!-- データ 2 ----
    iseed = 1
    x(1) = 2.*(rngu3(iseed)-0.5)
    do n=2,nmax
      x(n)   = 2.*(rngu3(iseed)-0.5)
      y(n-1) = x(n)
    end do
    y(nmax) = x(1)

!-- グラフ 2 ----
    call DclNewFig

    call DclSetWindow(  -1.1,  1.1, -1.1, 1.1 )
    call DclSetViewPort(  0.15, 0.95,  0.1, 0.5 )
    call DclSetTransNumber( 1 )
    call DclSetTransFunction

    call DclSetTitle( 'x2-title', 'y2-title', '', '' )
    call DclDrawScaledAxis

    call DclDrawMarker( x, y )

    call DclCloseGraphics

end program



DclNewFrame
(GRFRM)
新たなフレーム(ページ)を設定する.
DclNewFig
(GRFIG)
新たな図を設定する.
DclSetViewPort
(GRSVPT)
ビューポートを設定する.

関連リンク