! Plotting grogram for general purpose using PostScript program main call init call viewport(0.2, 0.2, 0.8, 0.6) call xyworld (0.0, -1.0, 1.0, 1.0) call frame call plotd call fin stop end ! function f(x) real(4) :: pi, f, x pi=atan(1.0)*4.0 f=exp(-x)*sin(4.0*pi*x) return end subroutine plotd() REAL(4) :: x1(0:20),y1(0:20) INTEGER :: i,n=20 do i=0,n x1(i)=float(i)/float(n) y1(i)=f(x1(i)) end do call linewidth(1.5) call linety(1) call setgray(0.0) call plot(x1(0), y1(0), 3) do i=1, n-2 call spline1( x1(i-1), y1(i-1), x1(i), y1(i), x1(i+1), y1(i+1), & x1(i+2), y1(i+2), -1) end do call spline1( x1(n-3), y1(n-3), x1(n-2), y1(n-2), x1(n-1), y1(n-1), & x1(n), y1(n), 0) call spline1( x1(n-3), y1(n-3), x1(n-2), y1(n-2), x1(n-1), y1(n-1), & x1(n), y1(n), 1) call stroke() return end subroutine frame REAL(4) :: x,y,dx,dy INTEGER :: nx,ny,ix,iy call linewidth(1.0) call rect(0.0, -1.0, 1.0, 1.0, 0.0, 1.0, 1) nx=2 do ix = 1, nx*10-1 x = float(ix)/float(nx*10) dy=1.0 if(ix/10*10.eq.ix) then call setgray(0.5) else call setgray(0.8) end if call plot( x, -dy, 3) call plot( x, dy, 2) call stroke() end do ny=2 do iy = 1, ny*10-1 y = float(iy)/float(ny*10)*2.0-1.0 dx=1.0 if(iy/10*10.eq.iy) then call setgray(0.5) else call setgray(0.8) end if call plot( 0.0, y, 3) call plot( dx, y, 2) call stroke() end do call setgray(0.0) call textx(0.75, 0.0, 1, 'x') call textx(0.05, 0.02, 1, '0') call textx(0.55, 0.02, 3, '0.5') call textx(0.95, 0.02, 1, '1') call texty(0.0, 0.5, 1, 'y') call texty(0.0, -1.0, 2, '-1') call texty(0.0, 0.0, 1, '0') call texty(0.0, 1.0, 1, '1') return end