Google
 

Trailing-Edge - PDP-10 Archives - decus_20tap4_198111 - decus/20-0126/apman.rno
There is 1 other file named apman.rno in the archive. Click here to see a list.
.ps 63,65;.ap;.ft;.t Programming Note 25/2
.b 2;.c;^&EASY_ GRAPH_ PLOTTING\&
.b 3;.c;Rob Cook
.c;Computer Centre
.c;La Trobe University
.c;21-Jun-77
.b 2;.c;^&CONTENTS\&
.ts 60;.b;.nf;1.0##FUNCTION	 2
.B;2.0##ATOPLT SUBROUTINES AND CALLING SEQUENCES	 3
.b;####2.1##Plotting a Single Graph	 3
####2.2##Plotting Up to 14 Sets of Data on the Same Graph	 5
####2.3##Changing Plotting Parameters	 7
####2.4##Obtaining Values of Plotting Parameters	 7
####2.5##Plotting the Tick Values as Character Strings	10
####2.6##Plotting Logarithms of Data	12
####2.7##Plotting Least Squares Lines	13
####2.8##To Plot One Graph and a Least Squares Line	13
####2.9##Plotting the Tick Values as Integers	15
####2.10#Fixing the Tick Value Increment	16
####2.11#Fixing One Tick Value	17
####2.12#Fixing the Origin and Windowing	18
####2.13#Even Simpler Graph Plotting	19
.b;3.0##USAGE	20
.B;####3.1##Gould Plotter	20
####3.2##Tektronix##4012	20
####3.3##Internal Details	20
####3.4##Error Messages	21
.b 2;APPENDIX A#-#ATOPLT Variable Parameters	A-1
.b;APPENDIX B#-#Centring Symbols	B-1
.f.pg
.hl 1 FUNCTION
 Two FORTRAN subroutines ONEPLT and ATOPLT allow a programmer to
plot graphs of one set of data against another using only one
subroutine call.
Either the Gould plotter or the Tektronix 4012 terminal can be used.
 ONEPLT draws one graph, plotting corresponding values from X and Y
arrays and representing each point by a symbol.
The points may optionally be joined by straight lines.
The graph is drawn in a standard sized box with a title along the
top edge.
The data will be scaled so that the graph fits neatly into the box, or
the user may specify the scaling.
Tick marks are drawn along each edge
and scale values are written at every second tick along the
axes.
The axes are titled, and if necessary the title will include an exponent
multiplier for the tick values.
 ATOPLT will super-impose up to 14 graphs on the one plot.
The data points are represented by different symbols which can be 
selected by the programmer.
All the points will be scaled to a single overall scale to fit into
the standard box.
Ranges of data for various graphs should therefore be compatible.
The
points of each graph may optionally be joined by straight lines.
The form of the plot is the same as for ONEPLT, except that ATOPLT
adds a notes box to the right of the graph.
The notes box contains an explanation for each symbol.
 A third subroutine, ATOPRM, allows the programmer to change the values of
parameters used by ONEPLT and ATOPLT in drawing the plot, if the
defaults are unsuitable.
The parameters whose values may be changed, and their default values,
are detailed in Appendix A.
 Other routines allow the plotting of the logarithms of data values,
plot text as tick labels instead of numbers and draw least
squares lines.
 A data set is defined, for the purposes of this document, as a set
of ordered co-ordinate pairs (X,Y) which will, when plotted, be identified by
the same centred symbol.
Different sets are represented by different symbols.
.pg
.hl 1 ATOPLT Subroutines and Calling Sequences
.hl 2 Plotting _a Single Graph
.b 2;.lm 10;CALL ONEPLT(X,Y,N,XTTL,NX,YTTL,NY,HTTL,NH)
.B;.I -10;X#########a real array containing the X data.
.i -10;Y#########a real array containing the Y data.
.i -10;N#########the number of elements in X and Y.
.i -10;XTTL######either a literal or an array containing the X
axis title.
.i -10;NX########the number of characters in XTTL.
If NX is negative the symbols plotted at the data points are joined
by straight line segments.
The maximum is about 50 characters.
.i -10;YTTL######either a literal or an array containing the Y axis
title.
.i -10;NY########the number of characters in YTTL.
If NY is negative no symbols will be drawn and the data points will
be joined by straight lines.
The maximum is about 30 characters.
.i -10;HTTL######either a literal or an array containing the graph
title.
.i -10;NH########the number of characters in HTTL.
The maximum is about 50 characters.
.lm 0
.pg.nf.ts 8
C	Example 1
C
	REAL A(8), B(8)
	DATA A /3.45, 2.67, 1.32, 4.44, 2.34, 8.00, 9.04,11.23/
	DATA B /2.33, 4.36, 2.84, 1.23, 4.65, 7.01,11.35,15.24/
C
	CALL ONEPLT(A,B,8,'X data',6,'Y data',6,'Example 1',9)
	END
.fg 30
C	Example 2
C
	REAL X(100), Y(100)
C
	DO 100 I = 1, 100
	  X(I) = I / 2.0
	  Y(I) = SIN(X(I)) - X(I)
 100	CONTINUE
	CALL ONEPLT(X,Y,100,'X data',-6,'Y data',6,'Example 2',9)
	END
.f.pg
.lm 0;.hl 2 Plotting up to 14 Sets of Data on the Same Graph
 The data arrays X and Y contain the values for up to 14
data sets. 
The data sets are distinguished by introducing a third array, ISYM,
of the same size.  Each element of ISYM is an integer (1 to 14) which
indicates the data set to which the corresponding elements of X and
Y belong.
For example if ISYM(3), ISYM(6), and ISYM(14) contains the value 3 then
the points (X(3),Y(3)), (X(6),Y(6)), (X(14),Y(14)), belong to the same
data set.  The value of an element of ISYM also has a unique
correspondence with a symbol (see table of symbols in Appendix B),
and that symbol is used to plot all points in a particular data set.
For the example above, points (X(3), Y(3)), (X(6), Y(6)) and 
(X(14), Y(14)) will be represented by the symbol in the table
corresponding to integer 3.
This method allows the programmer to fill X and Y arrays in any order
he wishes, provided that he fills the ISYM array in the same order.
If any element of ISYM is negative the data point corresponding to that 
element will be joined to the previous data point of the same data set by a
straight line.
 Each data set can be identified by a title written in the notes box.
The titles are specified in the rows of the NOTES array, one title per symbol used.
The titles may each be up to 20 characters long, drawn in two lines
of ten characters each.
The note contained in the elements (1,1), (1,2), (1,3), (1,4), of the 
array NOTES are associated  with the data set represented by the
lowest absolute valued symbol.
(2,1), (2,2), are associated with the second lowest valued
symbol and so on.
 The argument values are not altered by ATOPLT.
.b;.c;CALL ATOPLT (X,Y,ISYM,N,XTTL,NX,YTTL,NY,HTTL,NH,NOTES,NN)
.lm +10;.b;.I -10;X#########a real array containing X values for all the
data sets.
.i -10;Y#########a real array containing Y values for all the data sets.
.i -10;ISYM######an integer array containing values in the range -14
to -1 and 1 to 14.
Each element specifies the symbol to be drawn for the corresponding (X,Y)
point.
Any other values in the array will cause the corresponding data point to be
ignored and a warning message typed.
.i -10;N#########the number of elements in X,Y and ISYM.
.i -10;XTTL######either a literal or an array containing the X axis
title.
.i -10;NX########the number of characters in XTTL.
The maximum is about 60 characters.
.i -10;YTTL######either a literal or an array containing the Y axis
title.
.i -10;NY########the number of characters in YTTL.
The maximum is about 30 characters.
.i -10;HTTL######either a literal or an array containing the graph
heading.
.i -10;NH########the number of characters in HTTL.
The maximum is about 60 characters.
.i -10;NOTES#####an NN by 4 array containing the notes to be
drawn in the note box.
.i -10;NN########the number of notes in XNOTES
need not be the same as the number of symbols used,
in which case, the first NN symbols will be 'noted' and extra notes will be ignored.
.b 2
.lm 0
.pg.fg 30.nf.ts 8
C	Example 3
C
	REAL	X(200), Y(200)
	INTEGER ISYM(200), NOTES(2,4)
C
	DATA	ISYM/100*1,100*-14/
	DATA	(NOTES(1,I),I=1,3)/'Y=Sin(X)    and'/
	DATA	(NOTES(2,I),I=1,2)/'Y=Cos(X)'/
C
	DO 100 I = 1, 100
	  X(I) = I / 10.0
	  X(I+100) = X(I)
	  Y(I) = SIN(X(I))
	  Y(I+100) = COS(X(I))
 100	CONTINUE
	CALL ATOPLT(X,Y,ISYM,200,'X data',6,'Y data',6,
     *		    'Example 3',9,NOTES,2)
	END
.f.pg
.hl 2 Changing Plotting Parameters
 There are 45 parameters in ONEPLT and ATOPLT
which may be set by the user to vary the way the graph is plotted.
This gives the user with special requirements considerable flexibility to
change the size, shape and details of the graph produced.
 The changeable parameters are numbered 1 to 45 (see Appendix A for
definitions and default values).  Default values are changed by a
call to the routine ATOPRM which identifies the parameters to be
altered and supplies new values.
A new value for any parameter remains in effect for all subsequent 
calls of ATOPLT and ONEPLT.
.b 2;.c;CALL ATOPRM(N,IP,XP)
.b;.lm +10;.i -10;N#########the number of elements in IP and XP (i.e. the
number of parameters to be changed), limit 45.
.i -10;IP########an integer array containing the integer codes
corresponding to the parameters to be changed.
.i -10;XP########a real array containing the new values of the
parameters.
The new values must correspond in order with the identifying integers
in array IP.
.lm -10
.hl 2 Obtaining the Values of ATOPLT Parameters
.p;The current settings of the ATOPLT parameters can be read
by calling the ATOGET subroutine.
You will need to read the values if you want to change them by
ATOPRM and set them back to their original values later, or if
you are writing programs to work on different plotters whose
parameters may differ.
.b 2.c;CALL ATOGET(N,IP,XP)
.b;.lm +10
.i -10;N#########number of parameters to be read
.i -10;IP########an integer array containing the integer values
corresponding to the parameters to be read
.i -10;XP########a real array that receives the current values of the
parameters
.lm -10
.pg
.fg 30
EXAMPLE of use of ATOPRM to produce an overall grid in a graph
box.
.b.nf.ts 8
	DIMENSION IP(4), XP(4)
C
	DATA IP, XP /7, 26, 27, 8, 220.0, 280.0, -2.0, 0.0/
C
	CALL ATOPRM(4,IP,XP)
	CALL ATOPLT(X,Y,ISYM,200,'X data',6,'Y data',6,
     *		    'Example 4',9,NOTES,2)
	END
.f
.f; This will cause the ticks to be made the same size as the axis
(7 corresponds to X axis tick size, 26 corresponds to Y axis
tick size, both set to default axis length), and half density lines
to be drawn, i.e. a half density grid will be drawn over the graph.
.pg;.p;The above example depends on the fixed numbers 220.0 and 280.0 as
the lengths of the Y and X axes, which is true for the Gould plotter
but not for the Tektronix.  The ATOGET subroutine could be used to find the
actual sizes of the axes, and the program would become independent of
plotter and any changes made to the axis length.
.b 2;.NF;.ts 8;	DIMENSION IP(4), IG(2), XP(4)
C
	DATA IP, XP /7, 26, 27, 8, 220.0, 280.0, -2.0, 0.0/
	DATA IG /4, 3/
C
	CALL ATOGET (2, IG, XP)
C
	CALL ATOPRM (4, IP, XP)
	CALL ATOPLT(X,Y,ISYM,200,'X data',6,'Y data',6,
     *		    'Example 4',9,NOTES,2)
	END
.pg
.hl 2 Plotting the Tick Values as Character Strings
.p;For some applications it is useful to be able to write a character
string at a tick instead of a number.  For example, '#Jan#' is more
meaningful than '1.0', if you are specifying monthly data.  This can
be done by calling the subroutine ATOCHL before you call ATOPLT or
ONEPLT.  In the call to ATOCHL, you specify an array containing the
labels to be used at successive ticks.  Each label is a maximum of
five characters and will be centred on the tick.  So that if your label
has three characters you should specify it as, e.g. '#Jan#'.
The first string is drawn at the origin and the strings are plotted
at every other tick.
.p;Character labels are meaningless unless you fill the values for
the ticks, so the ATOCHL call allows the programmer to specify the
increment and origin value too.  If you provide less labels than
there are ticks, ATOPLT will re-use your labels when it runs out.  So
if you provide '#Jan#' through to '#Dec#' and there are 24 positions, the
months will appear twice.
.p;Once ATOCHL has been used to set character labelling, it remains
in effect for all subsequent calls to ATOPLT and ONEPLT, until a second
call to ATOCHL is used to unset character labelling.
.b;.nf;.ts 10;.c;CALL ATOCHL(IXY,NLAB,TLAB,TINC,ORGV)
.B;IXY	1##:##set X-axis character labels
	2##:##set Y-axis character labels
	-1#:##unset X-axis character labels
	-2#:##unset Y-axis character labels
NLAB	integer number of labels provided; limit 24
TLAB	array containing NLAB labels, each occupying 
	one element and given in A5 format.
TINC	increment in value per tick
ORGV	value at axis origin.
.b;.f;.pg;.fg 30
.nf.ts 8
	DIMENSION DAYS(7)
C
	DATA DAYS/' Sun  Mon  Tue  Wed  Thu  Fri  Sat '/
C
	CALL ATOCHL(1,7,DAYS,0.5,0.0)
	CALL ONEPLT(A,B,8,'X data',6,'Y data',6,'Example 5',9)
	END
.f.pg
.hl 2 Plotting Logarithms of Data
.p;The logarithms of the data can be plotted by calling the subroutine
ATOLOG before calling ATOPLT or ONEPLT.
ATOLOG merely asks ATOPLT to use logarithms; it does not do any
plotting itself.
If during subsequent plotting any of the data to be plotted are negative a warning message
is typed and the point is ignored.
.p;Once ATOLOG has been used to set logarithm plotting, it remains in
effect for all subsequent calls to ONEPLT or ATOPLT, until a
second call to ATOLOG is used to unset logarithm plotting.
.nf;.b;.ts 20;	CALL ATOLOG(IXY)
.b;.ts 10;IXY	1##:##set to plot logarithm of X-data
	2##:##set to plot logarithm of Y-data.
	-1#:##unset to plot logarithm of X-data
	-2#:##unset to plot logarithm of Y-data
.f.fg 30
.nf.ts 8
	CALL ATOLOG(1)
	CALL ONEPLT(A,B,8,'X data',6,'Y data',6,'Example 6',9)
.f.pg
.hl 2 Plotting Least Squares Lines
.p;Users plotting results from experiments may find it useful to
add the linear least squares line that fits the data points.  Two
methods are available.  By calling the subroutine ATOLSQ before
calling ATOLPT or ONEPLT, the programmer can ask for a least
squares line to be fitted to any or all of his data sets.  By calling
ATOLSP, he can ask for a linear least squares line that passes 
through a fixed point, for example [0,0].
.p;After calls to ATOLSQ or ATOLSP, least squares lines will be
added to plots drawn by all subsequent calls to ATOPLT and ONEPLT
until a second call to ATOLSQ or ATOLSP sets the number of least
squares lines, N, to zero.
.b;.nf;.ts 20;.c;CALL ATOLSQ(N,IDS)
.b.ts 10;N	number of least squares lines (use 1 for ONEPLT)
IDS	array containing N data set indicator values (use 1 for 
	ONEPLT)
.b 2;.ts 20;.c;CALL ATOLSP(IDS,XPT,YPT,N)
.B;.TS 10
N	number of last squares lines.
IDS	array containing N data set indicator values
XPT,YPT	arrays of co-ordinates of the fixed points
.f;.hl 2 To Plot One Graph and a Least Squares Line
.p;The ONEPLS subroutine is identical to ONEPLT except that it
adds a least squares line to the plot.
.b;.c;CALL ONEPLS(X,Y,N,XTTL,NX,YTTL,NY,HTTL,NH)
.f.pg.fg 30
.nf.ts 8
	CALL ATOLSQ(1,1)
	CALL ONEPLT(A,B,8,'X data',6,'Y data',6,'Example 7',9)
.b;or
.b
	CALL ONEPLS(A,B,8,'X data',6,'Y data',6,'Example 7',9)
.f.pg
.hl 2 Plotting the Tick Values as Integers
.p;Tick values are normally plotted as REALs to 2 decimal places.  The programmer
can request INTEGER labels by setting the appropriate parameter
using ATOPRM:
.b 2;.nf;.ts 25,40
	Parameter	Value
.b;.ts 29,41
X-axis INTEGER labels	37	1.0
Y-axis INTEGER labels	38	1.0
.f.fg 30
.nf.ts 8
	CALL ATOPRM(1,37,1.0)
	CALL ONEPLT(A,B,8,'X data',6,'Y data',6,'Example 8',9)
.f.pg
.hl 2 Fixing the Tick Value Increment
.p;ATOPLT examines the data to be plotted and selects values for the
origin of each axis and the increment in the value for each tick, so
that axes cover the data as closely as possible while still giving
'sensible' numbers at each tick.
.p;Although the tick numbers are 'sensible' they may not be what
the user requires.  One way of getting better results is to specify
the increment in value for each tick by a call to ATOPRM.  To do
this effectively, you need to have some idea of the range of your
data and to be aware that ATOPLT writes the tick value on every
^&other\& tick, starting at the origin.  Therefore the specified increment should be half
the difference in numbers drawn at the ticks.  A tick value of 0.0 means 'not specified'.
.b 2;.nf;.ts 30
	Parameter
.b;.ts 34
X-axis tick value increment	33
Y-axis tick value increment	34
.f.fg 30
.nf.ts 8
	CALL ATOPRM(1,33,0.5)
	CALL ONEPLT(A,B,8,'X data',6,'Y data',6,'Example 9',9)
.f.pg
.hl 2 Fixing One Tick Value
.p;Continuing on the same theme, to get a neat labelling for an
axis may require more than just fixing the increment.  For example,
fixing the increment at 1.0 may give you labels of 1.13, 2.13, 3.13,...,
whereas you would prefer 1.00, 2.00,...   To do this you can both fix the
increment and insist that a given value appears at one tick along the
axis.  In this case, you could say that 2.0 is to be a tick value.  Two
ATOPRM parameters must be used.  You must declare that you are fixing a tick
value and give the value.
.b 2;.nf;.ts 25,40
	Parameter	Value
.b;.ts 28,40
X-fix-value-flag	31	 1.0
X fixed value	35	value
Y-fix-value-flag	32	 1.0
Y fixed value	36	value
.b 2;.f;
ATOPLT uses your fixed value (and increment if specified) and
calculates an origin value and tick spacing so that the whole of
your data will fit on to the graph.
.fg 29
.nf.ts 8
	DIMENSION IP(2), XP(2)
	DATA IP, XP /31, 35, 1.0, 5.0/
C
	CALL ATOPRM(2,IP,XP)
	CALL ONEPLT(A,B,8,'X data',6,'Y data',6,'Example 10',10)
	END
.f.pg
.hl 2 Fixing the Origin and Windowing
.p;Another alternative is to specify the value at the origin of
the axis.  ATOPLT will "window" your data, that is, any data values
that fall below your origin will not be plotted and lines joining
these points to points on the graph will terminate at the graph
border.  If you specify a value increment as well, you are fixing
the values at the end-points of the axis, because the axis contains a fixed number of points (that can be calculated
from the axis length and the tick spacing) and data will be windowed at both ends
of the axis.
.b 2;.nf;.ts 25,40
	Parameter	Value
.b;.ts 28,40
X-fix-value-flag	31	 2.0
X-origin-value	35	value
Y-fix-value-flag	32	 2.0
Y-origin-value	36	value
.f.fg 30
.nf.ts 8
	DIMENSION IP(2), XP(2)
	DATA IP, XP /31, 35, 2.0, 3.0/
C
	CALL ATOPRM(2,IP,XP)
	CALL ONEPLT(A,B,8,'X data',6,'Y data',6,'Example 11',10)
	END
.f.pg
.hl 2 Even Simpler Graph Plotting
.p;These subroutines are extremely simple to use, for example,
for students without much knowledge of FORTRAN.  Standard titles
are supplied.
Both SIMPLT and SIMPLS plot a graph given the coordinates of the points.  SIMPLS adds a least squares line.
.b;.c;CALL SIMPLT(X,Y,N)
.br;and
.c;CALL SIMPLS(X,Y,N)
.b.NF;.TS 10;X	array containing X coodinates of points
Y	array containing Y coordinates of points
N	size of X and Y arrays
.f.fg 30
.nf.ts 8
	CALL SIMPLT(A,B,8)
.f.pg
.hl 1 Usage
.hl 2 Gould Plotter
.p;There is a library file, PLPLOT.REL, on the PIC:#directory containing ATOPLT configured
for the Gould plotter.  To load or execute a program that calls ATOPLT,
use a command of the form:
.b;.nf;.ts 10;	&.EXECUTE program, PIC:PLPLOT/SEARCH
.b;.f
In a batch job, add a $INCLUDE card following $FORTRAN cards but
before the $DATA or $EXECUTE card:
.b;.nf;	$INCLUDE PIC:PLPLOT/SEARCH
.f;.p;Each time a call to ATOPLT is executed a file will be created
with a name of the form Q??S1.PLT.  All files named *.PLT are
queued to the plotter at logout but they can be plotted at any time by using the PLOT command to the monitor.
.hl 2 Tektronix 4012
.p
.p;The Tektronix terminal must be initialized correctly for graph plotting.
If you have any problems use the SET TTY command at monitor level:
.b;.nf;	&.SET TTY NO CRLF FORM WIDTH 80
.p;.F;There is a second library on the PIC: directory containing ATOPLT
configured for the Tektronix terminal.  To load or execute a program
that calls ATOPLT, use a command of the form:
.b;.nf;	&.EXECUTE program, PIC:TKPLOT/SEARCH
.b;.f;.hl 2 Internal Details
.ls;.lm -5;.le;ATOPLT subroutines require at least 6P of memory and may require up to 13P depending
on the features used.
.le;Entry parts to ATOPLT are:
.b;ATOCHL,###ATOGET,###ATOLOG,###ATOLSQ
.BR;ATOLSP,###ATOPLT,###ATOPRM,###ONEPLS
.BR;ONEPLT,###SIMPLS,###SIMPLT
.le;There are a large number of concealed subroutines in the ATOPLT system.  They
all have names of the form AP????, and users are advised not to use
similar names to avoid the possibility of conflict.
ATOPLT also uses named COMMON areas with names of the form AP????.
.le;ATOPLT has been written to be as independent as possible of the
particular plotter hardware and software.  Any user wishing to convert
ATOPLT to work with some other plotter should consult PD36.
.els;.lm 0
.hl 2 Error Messages
.ls;.lm -5;.le;%ATPPOR#ATOPRM index p out of range.
.b;ATOPRM parameters must lie in the range 1&<p&<45.
.le;%ARPPLV#ATOPRM parameter p value v is less than n
.br;%ATPPXV#ATOPRM parameter p value v exceeds n.
.b;Some parameters have limits which cannot be exceeded.
.le;%ATPAPL#Attempt to plot log of v - point ignored
.b;v is a negative number and ATOPLT was asked to plot its logarithm.
.le;%ATPTML#Too many text labels supplied.
.b;The user cannot give more than 24 text labels in a call to ATOCHL.
.le;%ATPNOV#No origin value supplied with text labels.
.b;Text labelling must be combined with  fixing
the tick origin.
.le;%ATPIOR#XY-axis indicator out of range n
.b;The XY indicator must be either 1 for the X axis or 2 for the Y axis.
.le;%ATPTMD#Too many data sets in ATOLSQ call:#n.
.br;%ATPTMD#Too many data sets in ATOLSP call:#n.
.b;Only 14 data sets can be used for least squares line drawing.
.le;%ATPIOR#Data point I out of range n.
.b;The data set indicators in the ISYM array must be in the range 
-14 to +14.
.els
.pg;.ps 63,68
.appendix ATOPLT_ Variable_ Parameters
.p;The values of the parameters given below may be altered, by using the
ATOPRM subroutine, allowing the ATOPLT user greater flexibility in
choosing his graph layout.  The units of all the values given below
are 'plotter units' i.e. mm * magnification-factor unless otherwise stated.
.p;The physical size of the plot is determined by the paper size for the
Gould plotter and by the size of the screen for the Tektronix.  The
default parameters are defined so that the drawing fills the physical
plotting area.  The lengths of the various parameters are in plotter
units.  Normally these units are mm, but they can be altered by setting
magnification factors for each axis which affects all lines drawn
in that direction.
.b 2;.nf;.ts 35,47,54
	^&Parameter\&	^&Gould\&	^&Tektronix\&
			###^&4012\&
.b;^&Overall_ Parameters\&
.ts 34,39,48,58
.b;Physical size of the plot in mm	X	 1	400.0	200.0
.br;	Y	 2	260.0	150.0
.b;Magnification factor - 0.5 is	X	28	  1.0	  1.0
.br;half size and 2.0 double size	Y	29	  1.0	  1.0
.b;Coordinates of the graph origin	X	 5	 50.0	 27.0
.br;relative to the plot origin	Y	 6	 15.0	 15.0
.b;Lengths of the axes	X	 3	280.0	130.0
.br;	Y	 4	220.0	120.0
.b;Width of the notes box		 9	 55.0	 41.0
.b;Coordinates of the Program	X	42	  0.0	  0.0
.br;ID message	Y	43	  5.0	  5.0
.b;Close the plot on exit from		30	  1.0	  1.0
.br;ATOPLT flag 1.0 = close plot
.br;############0.0 = leave plot open
.pg;^&Titling\&
.b;Coordinates of X axis title	X	11	  8.0	 50.0
.br;	Y	12	  2.0	  1.0
.b;Coordinates of Y axis title	X	13	 30.0	  6.0
.br;	Y	14	 40.0	 40.0
.b;Clearance of plot title from		18	  3.0	  3.0
.br;top of graph frame (the plot
.br;title is centred over the frame)
.b 2;^&Ticks_ Along_ the_ Axes\&
.b;Spacing between ticks on axis	X	10	 10.0	 10.0
	Y	45	 10.0	 10.0
.b;Height of ticks on each axis	X	 7	  2.5	  2.5
.br;	Y	26	  2.5	  2.5
.b;Difference between heights of		 8	  1.5	  1.5
.br;alternate ticks (one setting
.br;for both axes)
.b;Line density for ticks		27	  1.0	  1.0
.br;(1.0 for full density,
.br;-2.0 for half density 
.br;-4.0 for quarter density etc.)
.b;Clearance of labels from		20	  2.0	  1.5
.br;graph frame
.b;Clearance of log labels exponent		41	  0.75	  0.75
.br;power for exponents
.b;Integer labels (rather than	X	37	  0.0	  0.0
.br;reals) 0.0=reals; 1.0=integers	Y	38	  0.0	  0.0
.b;Increment in data values between	X	33	  0.0	  0.0
.br;ticks. 0.0 means ATOPLT will	Y	34	  0.0	  0.0
.br;scale values to fit ticks
.b;Fix-tick-value flags	X	31	  0.0	  0.0
.br;0.0 means no fixed values	Y	32	  0.0	  0.0
.br;1.0 means that (35,36) give
.br;####tick value
.br;2.0 means that (35,36) give any
.br;####origin value
.b;Fixed tick value or origin	X	35	  0.0	  0.0
.br;	Y	36	  0.0	  0.0
.pg;^&Note_ Box_ Positioning\&
.b;(X,Y) displacement of first	X	22	  5.0	  2.0
.br;note line from top left	Y	23	  8.0	  4.0
.br;corner of note box
.b;Spacing between note lines		24	  5.0	  5.0
.b 2;^&Character_ Sizes\&
.b;Symbols used for ploting points		25	  2.0	  2.0
.b;Axis titles	X	15	  5.0	  5.0
.br;	Y	16	  5.0	  5.0
.b;Plot title		17	  5.0	  5.0
.b;Tick label		19	  3.0	  2.5
.b;Exponents for log labels		39	  2.5	  2.5
.b;Exponent powers for log labels		40	  2.0	  2.0
.b;Program ID		44	  3.0	  2.0
.b;Notes		21	  3.0	  3.0
.f
.appendix Centring Symbols
.p;Listed below are the symbols plotted at the data points for
data sets numbered from 1 to 14.
.fg 40