.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 /sys/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 /sys/lib/grap.defines
.TP
.B /sys/lib/grap.defines
definitions of standard plotting characters, e.g., bullet
.SH SOURCE
.B /sys/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.
