.TH GRAP 1
.SH NAME
grap \- pic preprocessor for drawing graphs
.SH SYNOPSIS
.B grap
[
.I file ...
]
.SH DESCRIPTION
.I Grap
is a
.IR pic (1)
preprocessor for drawing graphs on a typesetter.
Graphs are surrounded by the
.I troff
`commands'
.B \&.G1
and
.BR  \&.G2 .
Data are scaled and plotted,
with tick marks supplied automatically.
Commands exist to modify the frame,
add labels, override the default ticks,
change the plotting style,
define coordinate ranges and transformations,
and include data from files.
In addition,
.I grap
provides the same loops, conditionals, and macro processing that
.I pic
does.
.PP
.BI frame
.B ht
.I e
.B wid
.I e
.B top
.B dotted
.IR ... :
Set the frame around the graph to specified
.B ht
and
.BR wid ;
default is 2 by 3 (inches).
The line
.I styles
.RB ( dotted ,
.BR dashed ,
.BR invis ,
.BR solid
(default))
of the 
.I sides
.RB ( top ,
.BR bot ,
.BR left ,
.BR right )
of the frame can be set
independently.
.PP
.B label
.I side
.B \&"a label"
.B \&"as a set of strings"
.IR adjust :
Place label on specified side; default side is bottom.
.I adjust
is
.B up
(or
.B down
.B left
.BR right )
.I expr
to shift default position;
.B width
.I expr
sets the width explicitly.
.PP
.BI ticks
.I side
.B in
.B at
.IR "optname expr, expr, ..." :
Put ticks on
.I side
at
.I "expr, ...,
and label with
.I \&"expr"\f1.
If any
.I expr
is followed by "...", label tick with "...",
and turn off all automatic labels.
If "..." contains
.BR %f 's,
they will be interpreted as
.B printf
formatting instructions for the tick value.
Ticks point
.B in
or
.B out
(default out).
Tick iterator: instead of
.B at
.IR \&... ,
use
.BI from
.I expr
.B to
.I expr
.B by
.I "op expr
where
.I op
is optionally
.B +-*/
for additive or multiplicative steps.
.B by
can be omitted, to give steps of size 1.
If no ticks are requested, they are supplied automatically;
suppress this with
.B ticks
.BR off .
Automatic ticks normally
leave a margin of 7% on each side; set this to anything by
.B margin
.B =
.IR expr .
.PP
.B grid
.I "side linedesc"
.B at
.IR "optname expr, expr, ..." :
Draw grids perpendicular to
.I side
in style
.I linedesc
at
.I "expr, ....\&
Iterators and labels work as with ticks.
.PP
.B coord
.I optname
.B x
.I "min, max"
.B y
.I "min, max"
.B "log x
.BR " log y" :
Set range of coords and optional log scaling on either or both.
This overrides computation of data range.
Default value of
.I optname
is current coordinate system
(each
.B coord
defines a new coordinate system).
.PP
.B plot
.I \&"str"
.B at
.IR point ;
.B
.I \&"str"
.B at
.IR point :
Put
.I str
at
.IR point .
Text position can be qualified with
.BR rjust ,
.BR ljust ,
.BR above ,
.BR below
after "...".
.PP
.B line
.B from
.I point
.B to
.IR "point linedesc" :
Draw line from here to there.
.B arrow
works in place of
.BR line .
.PP
.B next
.I optname
.B at
.IR "point linedesc" :
Continue plot of data in
.I optname to
.IR point ;
default is current.
.PP
.BI draw
.IR "optname linedesc ..." :
Set mode for
.BR next :
use this style from now on,
and plot "..." at each point (if given).
.PP
.BI new
.IR "optname linedesc ..." :
Set mode for
.BR next ,
but disconnect from previous.
.PP
A list of numbers
.I "x y1 y2 y3 ...
is treated as 
.B plot
.B bullet
.B at
.IR x,y1 ;
.B plot
.B bullet
.B at
.IR x,y2 ;
etc., or as
.B next
.B at
.I x,y1
etc., if
.B draw
is specified.
Abscissae of 1,2,3,... are provided if there is only one input number per line.
.PP
A
point
.I "optname expr, expr
maps the point to the named coordinate system.
A
.I linedesc
is one of
.B dot
.B dash
.B invis
.B solid
optionally followed by an expression.
.PP
.BI define
.I name
.BI { whatever } \f1:
Define a macro.
There are macros already defined for standard plotting
symbols like
.BR bullet ,
.BR circle ,
.BR star ,
.BR plus ,
etc., in
.BR \*9/lib/grap.defines ,
which is included if it exists.
.PP
.I var
.B =
.IR expr :
Evaluate an expression.
Operators are
.B=
.B +
.B -
.B *
and
.BR / .
Functions are
.B log
and
.B exp
(both base 10),
.BR sin ,
.BR cos ,
.BR sqrt ;
.B rand
returns random number on [0,1);
.BI max( e , e )\f1,
.BI min( e , e )\f1,
.BI int( e )\f1.
.PP
.B print
.IR expr ;
.B print
\fL"\f2...\fL"\f1:
As a debugging aid, print
.I expr
or
.I string
on the standard error.
.PP
.B copy
\fL"\fIfile name\fL"\fR:
Include this file right here.
.PP
.B copy
.B thru
.IR macro :
Pass rest of input (until
.BR \&.G2 )
through
.IR macro ,
treating each field (non-blank, or "...") as an argument.
.I macro
can be the name of a macro previously defined,
or the body of one in place, like
.BR "/plot $1 at $2,$3/" .
.PP
.B copy
.B thru
.I macro
.B until
\fL"\fIstring\fL"\fR:
Stop copy when input is
.I string
(left-justified).
.PP
.BI pic
.IR "remainder of line" :
Copy to output with leading blanks removed.
.PP
.BI graph
.IR "Name pic-position" :
Start a new frame, place it at specified position,
e.g.,
.B graph
.B Thing2
.BR "with .sw at Thing1.se + (0.1,0)" .
.I Name
must be capitalized to keep
.I pic
happy.
.PP
.BI \&. "anything at beginning of
.IR line :
Copied verbatim.
.PP
.B sh
.BI % anything
.BR % :
Pass everything between the
.BR % 's
to the shell;
as with macros,
.B %
may be any character and
.I anything
may include newlines.
.PP
.B #
.IR anything :
A comment, which is discarded.
.PP
Order is mostly irrelevant; no category is mandatory.
Any arguments on the
.B \&.G1
line are placed on the generated
.B \&.PS
line for
.IR pic .
.SH EXAMPLES
.EX
.ps -1
.vs -1
\&.G1
frame ht 1 top invis right invis
coord x 0, 10 y 1, 3 log y
ticks left in at 1 "bottommost tick", 2,3 "top tick"
ticks bot in from 0 to 10 by 2
label bot "silly graph"
label left "left side label" "here"
grid left dashed at 2.5
copy thru / circle at $1,$2 /
1 1
2 1.5
3 2
4 1.5
10 3
\&.G2
.G1
frame ht 1 top invis right invis
coord x 0, 10 y 1, 3 log y
ticks left in at 1 "bottommost tick", 2,3 "top tick"
ticks bot in from 0 to 10 by 2
label bot "silly graph"
label left "left side label" "here"
grid left dashed at 2.5
copy thru / circle at $1,$2 /
1 1
2 1.5
3 2
4 1.5
10 3
.G2
.ps
.vs
.EE
.SH FILES
.TF \*9/lib/grap.defines
.TP
.B \*9/lib/grap.defines
definitions of standard plotting characters, e.g., bullet
.SH SOURCE
.B \*9/src/cmd/grap
.SH "SEE ALSO"
.IR pic (1), 
.IR troff (1)
.br
J. L. Bentley and B. W. Kernighan,
``GRAP\(emA Language for Typesetting Graphs'',
.I
Unix Research System Programmer's Manual,
Tenth Edition, Volume 2.
