URI: 
       tgrap.1 - plan9port - [fork] Plan 9 from user space
  HTML git clone git://src.adamsgaard.dk/plan9port
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
       tgrap.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.