123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416 |
- .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.
|