.TH PLOT 7
.SH NAME
plot \- graphics interface
.SH DESCRIPTION
Files of this format are interpreted by
.IR  plot (1)
to draw graphics on the screen.
A
.I plot
file is a
.SM UTF
stream of
instruction lines.
Arguments are delimited by spaces, tabs, or commas.
Numbers may be floating point.
Punctuation marks (except 
.LR : )
,
spaces, and tabs at the beginning of lines are ignored.
Comments run from  
.L :
to newline.
Extra letters appended to a valid instruction are ignored.
Thus
.LR ...line ,
.LR line , and 
.L li
all mean the same thing.
Arguments are interpreted as follows:
.TP
1.
If an instruction requires no arguments, the rest of the line is ignored.
.TP
2.
If it requires a string argument, then all the line
after the first field separator is passed as argument.
Quote marks may be used to preserve leading blanks.
Strings may include newlines represented as
.LR \en .
.TP
3.
Between numeric arguments alphabetic characters and
punctuation marks are ignored.
Thus
.L
line from 5 6 to 7 8
draws a line from (5, 6) to (7, 8).
.TP
4.
Instructions with numeric arguments remain in effect until
a new instruction is read.
Such commands may spill over many lines. Thus
the following sequence will draw a polygon
with vertices
(4.5, 6.77), (5.8, 5.6), (7.8, 4.55), and (10.0, 3.6).
.IP
.EX
move 4.5 6.77
vec 5.8, 5.6 7.8
4.55 10.0, 3.6 4.5, 6.77
.EE
.PP
The instructions are executed in order.
The last designated point in a
.BR line ", " move ", " rmove ,
.BR vec ", " rvec ", " arc ,
or
.B point
command becomes the `current point'
.RI ( X,Y )
for the next command.
.SS "Open & Close"
.PD0
.TP 10
.BI o " string"
Open plotting device.
For 
.IR troff ,
.I string
specifies the size of the plot
(default is
.LR 6i ).
.TP 10
.B cl
Close plotting device.
.PD
.SS "Basic Plotting Commands"
.PD0
.TP 10
.B e
Start another frame of output.
.TP 10
.BI m " x y"
(move) Current point becomes
.I "x y."
.TP 10
.BI rm " dx dy"
Current point becomes
.I "X+dx Y+dy."
.TP 10
.BI poi " x y"
Plot the point
.I "x y"
and make it the current point.
.TP 10
.BI v " x y"
Draw a vector from the current point to
.I "x y."
.TP 10
.BI rv " dx dy"
Draw vector from current point to
.RI X + dx
.RI Y + dy
.TP 10
.BI li " x1 y1 x2 y2"
Draw a line from
.I "x1 y1"
to
.I "x2 y2."
Make the current point
.I "x2 y2."
.TP 10
.BI t " string"
Place the
.I string
so that its
first character is centered on the current point (default).
If
.I string
begins with
.L \eC
.RL ( \eR ),
it is centered (right-adjusted) on the current point.
A backslash at the beginning of the string may
be escaped with another backslash.
.TP 10
.BI a " x1 y1 x2 y2 xc yc r"
Draw a circular arc from
.I "x1 y1"
to
.I "x2 y2"
with center
.I "xc yc"
and radius
.IR r .
If the radius is positive, the arc is drawn counterclockwise;
negative, clockwise.
The starting point is exact but the ending point is approximate.
.TP 10
.BI ci " xc yc r"
Draw a circle centered at
.I "xc yc"
with radius
.IR r .
If the range and frame parameters do not specify a square,
the `circle' will be elliptical.
.TP 10
.BI di " xc yc r"
Draw a disc centered at
.I "xc yc"
with radius
.I r
using the filling color (see 
.B cfill
below).
.TP 10
.BI bo " x1 y1 x2 y2"
Draw a box with lower left corner at
.I "x1 y1"
and upper right corner at
.I "x2 y2."
.TP 10
.BI sb " x1 y1 x2 y2"
Draw a solid box with lower left corner at
.I "x1 y1"
and upper right corner at
.I "x2 y2"
using the filling color (see 
.B cfill
below).
.TP 10
.BI par " x1 y1 x2 y2 xg yg"
Draw a parabola from
.I "x1 y1"
to
.I "x2 y2"
`guided' by
.I "xg yg."
The parabola passes through the midpoint of the line joining
.I "xg yg"
with the midpoint of the line
joining
.I "x1 y1"
and
.I "x2 y2"
and is tangent to the lines from
.I "xg yg"
to the endpoints.
.TP 10
.BI "pol { {" "x1 y1 ... xn yn" } " ... " { "X1 Y1 ... Xm Ym\fP} }\fI"
Draw polygons with vertices
.I "x1 y1 ... xn yn"
and
.I "X1 Y1 ... Xm Ym."
If only one polygon is specified, the inner brackets are
not needed.
.TP 10
.BI "fi { {" "x1 y1 ... xn yn" } " ... " { "X1 Y1 ... Xm Ym\fP} }\fI"
Fill a polygon.
The arguments are the same as those for
.B pol
except that the first vertex is automatically repeated to
close each polygon.
The polygons do not have to be connected.
Enclosed polygons appear as holes.
.TP 10
.BI "sp { {" "x1 y1 ... xn yn" } " ... " { "X1 Y1 ... Xm Ym\fL} }\fI"
Draw a parabolic spline guided by
.I "x1 y1 ... xn yn"
with simple endpoints.
.TP 10
.BI "fsp { {" "x1 y1 ... xn yn" } " ... " { "X1 Y1 ... Xm Ym\fL} }\fI"
Draw a parabolic spline guided by
.I "x1 y1 ... xn yn"
with double first endpoint.
.TP 10
.BI "lsp { {" "x1 y1 ... xn yn" } " ... " { "X1 Y1 ... Xm Ym\fL} }\fI"
Draw a parabolic spline guided by
.I "x1 y1 ... xn yn"
with double last endpoint.
.TP 10
.BI "dsp { {" "x1 y1 ... xn yn" } " ... " { "X1 Y1 ... Xm Ym\fL} }\fI"
Draw a parabolic spline guided by
.I "x1 y1 ... xn yn"
with double endpoints.
.TP 10
.BI "csp { {" "x1 y1 ... xn yn" } " ... " { "X1 Y1 ... Xm Ym\fL} }\fI"
.TP 10
.BI in " filename"
(include) Take commands from
.IR filename .
.TP 10
.BI de " string " { " commands " }
Define
.I string
as
.IR commands .
.TP 10
.BI ca " string scale"
Invoke commands defined as
.I string
applying
.I scale
to all coordinates.
.PD
.SS "Commands Controlling the Environment"
.PD0
.TP 10
.BI co " string"
Use color given by first character of
.IR string ,
one of
.BR red ,
.BR yellow ,
.BR green ,
.BR blue ,
.BR cyan ,
.BR magenta ,
.BR white ,
and
.BR kblack .
If
.I string
begins with a digit, it is taken to be
a 32-bit number specifying 8 bit each of red, green, blue, and alpha.
For example,
.B 0xFFFF00FF
denotes solid yellow.
.TP 10
.BI pe " string"
Use
.I string
as the style for drawing lines.
The available pen styles are:
.BR solid ,
.BR  dott [ed],
.BR short ,
.BR long ,
.BR dotd [ashed] ,
.BR cdash ,
.BR ddash
.TP 10
.BI cf " string"
Color for filling (see
.BR co ,
above).
.TP 10
.BI ra " x1 y1 x2 y2"
The data will fall between
.I "x1 y1"
and
.I "x2 y2."
The plot will be magnified or reduced to fit
the device as closely as possible.
.IP
Range settings that exactly fill the plotting area
with unity scaling appear below for
devices supported by the filters of
.IR  plot (1).
The upper limit is just outside the plotting area.
In every case the plotting area is taken to be square;
points outside may be displayable on
devices with nonsquare faces.
.TP 10
.BI fr " px1 py1 px2 py2"
Plot the data in the fraction of the display
specified by
.I "px1 py1"
for lower left corner
and
.I "px2 py2"
for upper right corner.
Thus  
.L frame .5 0 1. .5
plots in the lower right
quadrant of the display;
.L frame 0. 1. 1. 0.
uses the whole display but
inverts the
.I y
coordinates.
.TP 10
.B sa
Save the current environment, and move to a new one.
The new environment inherits the old one.
There are 7 levels.
.TP 10
.B re
Restore previous environment.
.PD
.SH "SEE ALSO"
.IR plot (1), 
.IR graph (1)
