plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

grap.1 (6413B)


      1 .TH GRAP 1
      2 .SH NAME
      3 grap \- pic preprocessor for drawing graphs
      4 .SH SYNOPSIS
      5 .B grap
      6 [
      7 .I file ...
      8 ]
      9 .SH DESCRIPTION
     10 .I Grap
     11 is a
     12 .MR pic (1)
     13 preprocessor for drawing graphs on a typesetter.
     14 Graphs are surrounded by the
     15 .I troff
     16 `commands'
     17 .B \&.G1
     18 and
     19 .BR  \&.G2 .
     20 Data are scaled and plotted,
     21 with tick marks supplied automatically.
     22 Commands exist to modify the frame,
     23 add labels, override the default ticks,
     24 change the plotting style,
     25 define coordinate ranges and transformations,
     26 and include data from files.
     27 In addition,
     28 .I grap
     29 provides the same loops, conditionals, and macro processing that
     30 .I pic
     31 does.
     32 .PP
     33 .BI frame
     34 .B ht
     35 .I e
     36 .B wid
     37 .I e
     38 .B top
     39 .B dotted
     40 .IR ... :
     41 Set the frame around the graph to specified
     42 .B ht
     43 and
     44 .BR wid ;
     45 default is 2 by 3 (inches).
     46 The line
     47 .I styles
     48 .RB ( dotted ,
     49 .BR dashed ,
     50 .BR invis ,
     51 .BR solid
     52 (default))
     53 of the 
     54 .I sides
     55 .RB ( top ,
     56 .BR bot ,
     57 .BR left ,
     58 .BR right )
     59 of the frame can be set
     60 independently.
     61 .PP
     62 .B label
     63 .I side
     64 .B \&"a label"
     65 .B \&"as a set of strings"
     66 .IR adjust :
     67 Place label on specified side; default side is bottom.
     68 .I adjust
     69 is
     70 .B up
     71 (or
     72 .B down
     73 .B left
     74 .BR right )
     75 .I expr
     76 to shift default position;
     77 .B width
     78 .I expr
     79 sets the width explicitly.
     80 .PP
     81 .BI ticks
     82 .I side
     83 .B in
     84 .B at
     85 .IR "optname expr, expr, ..." :
     86 Put ticks on
     87 .I side
     88 at
     89 .I "expr, ...,
     90 and label with
     91 .I \&"expr"\f1.
     92 If any
     93 .I expr
     94 is followed by "...", label tick with "...",
     95 and turn off all automatic labels.
     96 If "..." contains
     97 .BR %f 's,
     98 they will be interpreted as
     99 .B printf
    100 formatting instructions for the tick value.
    101 Ticks point
    102 .B in
    103 or
    104 .B out
    105 (default out).
    106 Tick iterator: instead of
    107 .B at
    108 .IR \&... ,
    109 use
    110 .BI from
    111 .I expr
    112 .B to
    113 .I expr
    114 .B by
    115 .I "op expr
    116 where
    117 .I op
    118 is optionally
    119 .B +-*/
    120 for additive or multiplicative steps.
    121 .B by
    122 can be omitted, to give steps of size 1.
    123 If no ticks are requested, they are supplied automatically;
    124 suppress this with
    125 .B ticks
    126 .BR off .
    127 Automatic ticks normally
    128 leave a margin of 7% on each side; set this to anything by
    129 .B margin
    130 .B =
    131 .IR expr .
    132 .PP
    133 .B grid
    134 .I "side linedesc"
    135 .B at
    136 .IR "optname expr, expr, ..." :
    137 Draw grids perpendicular to
    138 .I side
    139 in style
    140 .I linedesc
    141 at
    142 .I "expr, ....\&
    143 Iterators and labels work as with ticks.
    144 .PP
    145 .B coord
    146 .I optname
    147 .B x
    148 .I "min, max"
    149 .B y
    150 .I "min, max"
    151 .B "log x
    152 .BR " log y" :
    153 Set range of coords and optional log scaling on either or both.
    154 This overrides computation of data range.
    155 Default value of
    156 .I optname
    157 is current coordinate system
    158 (each
    159 .B coord
    160 defines a new coordinate system).
    161 .PP
    162 .B plot
    163 .I \&"str"
    164 .B at
    165 .IR point ;
    166 .B
    167 .I \&"str"
    168 .B at
    169 .IR point :
    170 Put
    171 .I str
    172 at
    173 .IR point .
    174 Text position can be qualified with
    175 .BR rjust ,
    176 .BR ljust ,
    177 .BR above ,
    178 .BR below
    179 after "...".
    180 .PP
    181 .B line
    182 .B from
    183 .I point
    184 .B to
    185 .IR "point linedesc" :
    186 Draw line from here to there.
    187 .B arrow
    188 works in place of
    189 .BR line .
    190 .PP
    191 .B next
    192 .I optname
    193 .B at
    194 .IR "point linedesc" :
    195 Continue plot of data in
    196 .I optname to
    197 .IR point ;
    198 default is current.
    199 .PP
    200 .BI draw
    201 .IR "optname linedesc ..." :
    202 Set mode for
    203 .BR next :
    204 use this style from now on,
    205 and plot "..." at each point (if given).
    206 .PP
    207 .BI new
    208 .IR "optname linedesc ..." :
    209 Set mode for
    210 .BR next ,
    211 but disconnect from previous.
    212 .PP
    213 A list of numbers
    214 .I "x y1 y2 y3 ...
    215 is treated as 
    216 .B plot
    217 .B bullet
    218 .B at
    219 .IR x,y1 ;
    220 .B plot
    221 .B bullet
    222 .B at
    223 .IR x,y2 ;
    224 etc., or as
    225 .B next
    226 .B at
    227 .I x,y1
    228 etc., if
    229 .B draw
    230 is specified.
    231 Abscissae of 1,2,3,... are provided if there is only one input number per line.
    232 .PP
    233 A
    234 point
    235 .I "optname expr, expr
    236 maps the point to the named coordinate system.
    237 A
    238 .I linedesc
    239 is one of
    240 .B dot
    241 .B dash
    242 .B invis
    243 .B solid
    244 optionally followed by an expression.
    245 .PP
    246 .BI define
    247 .I name
    248 .BI { whatever } \f1:
    249 Define a macro.
    250 There are macros already defined for standard plotting
    251 symbols like
    252 .BR bullet ,
    253 .BR circle ,
    254 .BR star ,
    255 .BR plus ,
    256 etc., in
    257 .BR \*9/lib/grap.defines ,
    258 which is included if it exists.
    259 .PP
    260 .I var
    261 .B =
    262 .IR expr :
    263 Evaluate an expression.
    264 Operators are
    265 .B=
    266 .B +
    267 .B -
    268 .B *
    269 and
    270 .BR / .
    271 Functions are
    272 .B log
    273 and
    274 .B exp
    275 (both base 10),
    276 .BR sin ,
    277 .BR cos ,
    278 .BR sqrt ;
    279 .B rand
    280 returns random number on [0,1);
    281 .BI max( e , e )\f1,
    282 .BI min( e , e )\f1,
    283 .BI int( e )\f1.
    284 .PP
    285 .B print
    286 .IR expr ;
    287 .B print
    288 \fL"\f2...\fL"\f1:
    289 As a debugging aid, print
    290 .I expr
    291 or
    292 .I string
    293 on the standard error.
    294 .PP
    295 .B copy
    296 \fL"\fIfile name\fL"\fR:
    297 Include this file right here.
    298 .PP
    299 .B copy
    300 .B thru
    301 .IR macro :
    302 Pass rest of input (until
    303 .BR \&.G2 )
    304 through
    305 .IR macro ,
    306 treating each field (non-blank, or "...") as an argument.
    307 .I macro
    308 can be the name of a macro previously defined,
    309 or the body of one in place, like
    310 .BR "/plot $1 at $2,$3/" .
    311 .PP
    312 .B copy
    313 .B thru
    314 .I macro
    315 .B until
    316 \fL"\fIstring\fL"\fR:
    317 Stop copy when input is
    318 .I string
    319 (left-justified).
    320 .PP
    321 .BI pic
    322 .IR "remainder of line" :
    323 Copy to output with leading blanks removed.
    324 .PP
    325 .BI graph
    326 .IR "Name pic-position" :
    327 Start a new frame, place it at specified position,
    328 e.g.,
    329 .B graph
    330 .B Thing2
    331 .BR "with .sw at Thing1.se + (0.1,0)" .
    332 .I Name
    333 must be capitalized to keep
    334 .I pic
    335 happy.
    336 .PP
    337 .BI \&. "anything at beginning of
    338 .IR line :
    339 Copied verbatim.
    340 .PP
    341 .B sh
    342 .BI % anything
    343 .BR % :
    344 Pass everything between the
    345 .BR % 's
    346 to the shell;
    347 as with macros,
    348 .B %
    349 may be any character and
    350 .I anything
    351 may include newlines.
    352 .PP
    353 .B #
    354 .IR anything :
    355 A comment, which is discarded.
    356 .PP
    357 Order is mostly irrelevant; no category is mandatory.
    358 Any arguments on the
    359 .B \&.G1
    360 line are placed on the generated
    361 .B \&.PS
    362 line for
    363 .IR pic .
    364 .SH EXAMPLES
    365 .EX
    366 .ps -1
    367 .vs -1
    368 \&.G1
    369 frame ht 1 top invis right invis
    370 coord x 0, 10 y 1, 3 log y
    371 ticks left in at 1 "bottommost tick", 2,3 "top tick"
    372 ticks bot in from 0 to 10 by 2
    373 label bot "silly graph"
    374 label left "left side label" "here"
    375 grid left dashed at 2.5
    376 copy thru / circle at $1,$2 /
    377 1 1
    378 2 1.5
    379 3 2
    380 4 1.5
    381 10 3
    382 \&.G2
    383 .G1
    384 frame ht 1 top invis right invis
    385 coord x 0, 10 y 1, 3 log y
    386 ticks left in at 1 "bottommost tick", 2,3 "top tick"
    387 ticks bot in from 0 to 10 by 2
    388 label bot "silly graph"
    389 label left "left side label" "here"
    390 grid left dashed at 2.5
    391 copy thru / circle at $1,$2 /
    392 1 1
    393 2 1.5
    394 3 2
    395 4 1.5
    396 10 3
    397 .G2
    398 .ps
    399 .vs
    400 .EE
    401 .SH FILES
    402 .TF \*9/lib/grap.defines
    403 .TP
    404 .B \*9/lib/grap.defines
    405 definitions of standard plotting characters, e.g., bullet
    406 .SH SOURCE
    407 .B \*9/src/cmd/grap
    408 .SH "SEE ALSO"
    409 .IR pic (1), 
    410 .MR troff (1)
    411 .br
    412 J. L. Bentley and B. W. Kernighan,
    413 ``GRAP\(emA Language for Typesetting Graphs'',
    414 .I
    415 Unix Research System Programmer's Manual,
    416 Tenth Edition, Volume 2.