Previous: grfgd Up: ../plot79_g.html Next: grfgg3


GRFGG

       SUBROUTINE  GRFGG (NIN,NOUT)
 C$    (General 2-D Graph Routine)
 C$
 C$    This routine makes a  plot  of one  or more  sets  of input
 C$    data, in either linear or logarithmic form, or in histogram
 C$    form, with single or multiple plots on each page.  A rather
 C$    large number of options  are available, making this quite a
 C$    powerful  program  for general line  graphing applications.
 C$    Nevertheless, defaults  are provided for  all variables, so
 C$    that the simplest  uses require only  the data points (X,Y)
 C$    themselves, and three titles (which may be blank).
 C$
 C$    The input is provided in NAMELIST $DATA ... $END.  The  use
 C$    of NAMELIST input is the only violation of Portable FORTRAN
 C$    in this routine.   It is  so useful, however,  that it  has
 C$    been used anyway.  On machines which do not support it,  an
 C$    alternate  version   may   be   developed   which   permits
 C$    keyword-driven free-form input.
 C$
 C$    The arguments are:
 C$
 C$    NIN......FORTRAN input unit number.
 C$    NOUT.....FORTRAN print unit number.
 C$
 C$    For generality,  physical page dimensions are  specified in
 C$    terms of an abstract dimension, which we call 'units'.  The
 C$    input values MARGIN(*), PAGEX,  and PAGEY are all  in these
 C$    units.  The scaling to the metric  system of measurement is
 C$    done  by multiplying by  a scale  factor, UNITS.  Here  are
 C$    some typical values:
 C$
 C$              -----      ----------------
 C$              UNITS      Input dimensions
 C$              -----      ----------------
 C$               2.54      inches (default)
 C$               0.01      meters
 C$               1.00      centimeters
 C$              10.00      millimeters
 C$              -----      ----------------
 C$
 C$----------------------------------------------------------------------
 C$
 C$    The input variables are as follows:
 C$
 C$    a) Required values:
 C$
 C$    X(*,*).......X(I,K) is point I in curve K.    X values must
 C$                 be in  ***ASCENDING*** order  if  integration,
 C$                 averaging, or  differentiation  of  the  input
 C$                 curves are  requested.  Interpolation  can  be
 C$                 done  for  arbitrary  curves  in  the   plane,
 C$                 including closed ones  signalled by the  first
 C$                 point being the same  as the last point.   For
 C$                 histogram plots, histogram  bar I  in curve  K
 C$                 has width BWIDTH(K), center at X(I,K),  bottom
 C$                 at YBASE(K), and top at Y(I,K).
 C$
 C$    Y(*,*).......Y(I,K) is point I in curve K.
 C$
 C$    b) Optional values (defaults normally adequate):
 C$
 C$    AVRAGE(*).... .TRUE. - Plot accumulated average of curve K.
 C$                           This is  drawn  with the  same  line
 C$                           type as  the  curve itself,  but  no
 C$                           data point symbols are marked.
 C$                 .FALSE. - No averages plotted (default).
 C$
 C$    BOX.......... .TRUE. - Draw a box around the outer plot
 C$                           frame (default).
 C$                 .FALSE. - Omit the outer frame box.
 C$
 C$    BWIDTH(*)....BWIDTH(K) is the width  of histogram bars  for
 C$                 data in curve K.
 C$
 C$    BYROWS....... .TRUE. - Display frames in multi-frame plots
 C$                           in row order.
 C$                 .FALSE. - Display frames in column order.
 C$
 C$    CHKDUP....... .TRUE. - Check for adjacent  duplicate points
 C$                           in  each  curve  and   eliminate the
 C$                           duplicate ones.  This is only useful
 C$                           when interpolation is being done.
 C$                 .FALSE. - No duplicate point check (default).
 C$
 C$    DERIV(*)..... .TRUE. - Plot derivative of interpolated
 C$                           curve K.
 C$                 .FALSE. - Plot curve K itself (default).
 C$                 This option  has  no effect  unless  NUMINT(K)
 C$                 .NE.   0.    When   derivative   plotting   is
 C$                 requested, it will be necessary to  explicitly
 C$                 supply YMIN, DYSUB, and YMAX, since these will
 C$                 in general be  unrelated to  the input  values
 C$                 Y(*,*) from which the default YMIN, DYSUB, and
 C$                 YMAX are determined.
 C$
 C$    DFXERR.......Fraction  of  window  width  to  be  used  for
 C$                 terminating horizontal bars on vertical  error
 C$                 bars (default 0.02).
 C$
 C$    DFYERR.......Fraction  of  window  height  to  be  used for
 C$                 terminating vertical bars on horizontal  error
 C$                 bars (default 0.02).
 C$
 C$    DXSUB........Step  size between  ticks on  the X-axis.   If
 C$                 specified, it overrides any NXSUB (see  below)
 C$                 value provided.  It may be adjusted,  however,
 C$                 if XMIN  and XMAX  are determined  internally.
 C$                 It is ignored for logarithmic axes.
 C$
 C$    DYSUB........Step  size between  ticks on  the Y-axis.  If
 C$                 specified, it overrides any NYSUB (see  below)
 C$                 value provided.  It may be adjusted,  however,
 C$                 if YMIN  and YMAX  are determined  internally.
 C$                 It is ignored for logarithmic axes.
 C$
 C$    FILLIN(*)....Polygon  fill indices  for histogram  bars  in
 C$                 curve K.  The default  fill index for curve  K
 C$                 is 6*(K-1), a cross-hatched diagonal  pattern.
 C$                 Fill index 0  implies no  filling.  Values  in
 C$                 the range  1..84 produce  successively  denser
 C$                 patterns, and  values  larger than  84  encode
 C$                 user-defined patterns  as  described  in  CORE
 C$                 routine SETPFI.
 C$
 C$    FSCALE.......Frame scale factor.     In a multi-frame plot,
 C$                 this option is  normally  used to  reduce  the
 C$                 plot data area  into a smaller  frame centered
 C$                 in the  frame  cell,  so as to leave space for
 C$                 labelling  of the   axes and  frame   (default
 C$                 FSCALE = 1.0).  Overall  frame scaling  may be
 C$                 further affected by HSCALE and VSCALE scaling.
 C$                 FSCALE   must be    set  smaller   than 1.0 if
 C$                 labelling  is  required,  since  labelling  is
 C$                 suppressed if there is insufficient  space for
 C$                 it.
 C$
 C$    FSTYLE.......Frame box line style.   The default value of 0
 C$                 suppresses  the  drawing of a box  around each
 C$                 frame of a multi-frame plot.  Non-zero integer
 C$                 values    select the  line    style   for  the
 C$                 surrounding box.
 C$
 C$    GSCALE.......Global graph scale factor.    The plot will be
 C$                 scaled, preserving the page aspect ratio, such
 C$                 that  the longer page dimension matches GSCALE
 C$                 * max(PAGEX, PAGEY) (default GSCALE = 1.0).
 C$
 C$    HISTGM(*).... .TRUE. - Plot   histogram    of   curv