.XE
.TH GRAPH 1
.SH NAME
graph \- draw a graph
.SH SYNOPSIS
.B graph
[ option ] ...
.PP
.B spline
[ option ] ...
.SH DESCRIPTION
.I Graph
with no options takes pairs of numbers from the
standard input as abscissas
.RI ( x -values)
and ordinates
.RI ( y -values)
of a graph.
Successive points are connected by straight lines.
The graph is encoded on the standard output
for display by the
.IR plot (1)
filters.
.PP
If the ordinate of a point is followed by
a nonnumeric string, that string is printed as a
label beginning on the point.
Labels may be surrounded with quotes "...", in
which case they may be empty or contain blanks
and numbers;
labels never contain newlines.
.PP
The following options are recognized,
each as a separate argument.
.TP
.B \-a
Supply abscissas automatically; no
.IR x -values
appear in the input.
Spacing is given by the next
argument (default 1).
A second optional argument is the starting point for
automatic abscissas (default 0, or 1
with a log scale in
.I x,
or the lower limit given by
.BR \-x ).
.TP
.B \-b
Break (disconnect) the graph after each label in the input.
.TP
.B \-c
Character string given by next argument
is default label for each point.
.TP
.B \-g
Next argument is grid style,
0 no grid, 1 frame with ticks, 2 full grid (default).
.TP
.B \-l
Next argument is a legend to title the graph.
Grid ranges
are automatically printed as part
of the title unless a
.B \-s
option is present.
.TP
.B \-m
Next argument is mode (style)
of connecting lines:
0 disconnected, 1 connected.
Some devices give distinguishable line styles
for other small integers.
Mode \-1 (default) begins with style 1 amd
rotates styles for successive curves under option
.BR \-o .
.TP
.B \-o
(Overlay.)
The ordinates for
.I n
superposed curves appear in the input
with each abscissa value.
The next argument is
.IR n .
.TP
.B \-s
Save screen; no new page for this graph.
.TP
\fB\-x\fR [ \fBl\fR ]
If
.B l
is present, x axis is logarithmic.
Next 1 (or 2) arguments are lower (and upper)
.IR x ""
limits.
Third argument, if present, is grid spacing on
.I x
axis.
Normally these quantities are determined automatically.
.TP
\fB\-y\fR [ \fBl\fR ]
Similarly for
.IR y .
.TP
.B \-e
Make automatically determined
.I x
and
.I y
scales equal.
.TP
.B \-h
Next argument is fraction of space for height.
.TP
.B \-w
Similarly for width.
.TP
.B \-r
Next argument is fraction of space to move right before plotting.
.TP
.B \-u
Similarly to move up before plotting.
.TP
.B \-t
Transpose horizontal and vertical axes.
(Option
.B \-a
now applies to the vertical axis.)
.PP
If a specified lower limit exceeds the upper limit,
the axis
is reversed.
.PP
.I Spline
is a filter that interpolates extra data
in input suitable for
.I graph
to make smoother-looking curves.
.PP
The following options are recognized,
each as a separate argument.
.TP
.B \-a
as in
.I graph
.TP
.B \-x
as in
.I graph
.TP
.B \-k
The constant
.IR k ""
used in the boundary value computation
.IP
.if n .ig
.EQ
y sub 0 sup {prime prime}~=~ky sub 1 sup {prime prime} , ~~~
y sub n sup {prime prime}~=~ky sub n-1 sup {prime prime} , ~~~
.EN
..
.if t .ig
.ce
(2nd deriv. at end) = k*(2nd deriv. next to end)
..
.IP
is set by the next argument.
(Default
.IR k ""
= 0.)
.TP
.B \-n
Space output points
so that approximately
.I n
intervals occur between the lower and upper
.I x
limits.
(Default
.I n
= 100.)
.TP
.B \-p
Make output periodic, i.e. match
derivatives at ends.
First and last input values should normally agree.
.SH DIAGNOSTICS
When data is not strictly monotone in
.I x,
.I spline
simply reproduces its input.
.SH "SEE ALSO"
plot(1), grap(1)
.SH BUGS
In
.I graph
segments that run out of bounds are dropped, not windowed.
.br
Logarithmic axes may not be reversed.
.br
Option
.B \-e
actually makes automatic limits, rather than automatic scaling,
equal.
.br
.I Spline
quietly discards points after the first 1000.
.br
.I Spline's
piecewise cubic fit
(R. W. Hamming,
.ft I
Numerical Methods for Scientists and Engineers,
.ft R
2nd ed., p. 349)
overshoots at sudden jumps.