PROGRAM PLOT2 C This program reads in a 2-column file and plots it. C .......................... PARAMETER (NMAX=2000) REAL X(NMAX), Y(NMAX) CHARACTER*50 INPUTFILE C .......................... WRITE(*,'(A,$)') 'Enter the name of the INPUT file : ' READ (*,'(A)') INPUTFILE IERR = 0 N= NMAX CALL GET_DATA (INPUTFILE, N, X, Y, ierr) IF (IERR .NE. 0) STOP '** error reading in data from file **' C .................... CALL PLOT_XY( N, X, Y) STOP 'PLOT1 finished.' END C ***************************************************************** SUBROUTINE PLOT_XY (N, X, Y) REAL X(N), Y(N) CHARACTER*1 REPLY, OPTION CHARACTER*50 XLAB, YLAB, TITLE C .................... C Find min and max of X and Y. XMIN = X(1) YMIN = Y(1) XMAX = XMIN YMAX = YMIN DO I=1,N XMIN = MIN (XMIN, X(I) ) XMAX = MAX (XMAX, X(I) ) YMIN = MIN (YMIN, Y(I) ) YMAX = MAX (YMAX, Y(I) ) END DO C Now boost limits 5% to make nicer looking plot XRANGE = XMAX - XMIN YRANGE = YMAX - YMIN BOOSTX = 0.05 * XRANGE BOOSTY = 0.05 * YRANGE XMIN = XMIN - XBOOST XMAX = XMAX + XBOOST YMIN = YMIN - YBOOST YMAX = YMAX + YBOOST C ................... C set up labels WRITE(*,'(A,$)') 'X-axis label: ' READ (*,'(A)') XLAB WRITE(*,'(A,$)') 'Y-axis label: ' READ (*,'(A)') YLAB WRITE(*,'(A,$)') 'Title: ' READ (*,'(A)') TITLE C choose plot style 50 WRITE(*,'(A,$)') 'Draw Points, Line or Bins? [P,L,B]: ' READ (*,'(A)') OPTION IF( (OPTION .NE. 'P').AND.(OPTION .NE. 'L').AND. & (OPTION .NE. 'B') ) GOTO 50 C ................... C PGPLOT calls to generate the plot. ISYMBOL = 17 ! draw a big dot if option P is used 100 CALL PGBEGIN( 0, '?', 1, 1) CALL PGENV ( XMIN,XMAX,YMIN,YMAX, 0, 0) CALL PGLABEL( XLAB,YLAB,TITLE) IF( OPTION .EQ. 'L') CALL PGLINE (N,X,Y) IF( OPTION .EQ. 'P') CALL PGPOINT(N,X,Y,ISYMBOL) IF( OPTION .EQ. 'B') CALL PGBIN (N,X,Y,.TRUE.) CALL PGEND C .......................... WRITE(*,'(A,$)') 'Make plot again? :' READ (*,'(A)') REPLY IF ((REPLY .EQ. 'Y').OR.(REPLY .EQ. 'y')) GOTO 100 C .......................... RETURN END C *****************************************************************