Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 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
.IR 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 /sys/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 /sys/lib/grap.defines
403
.TP
404
.B /sys/lib/grap.defines
405
definitions of standard plotting characters, e.g., bullet
406
.SH SOURCE
407
.B /sys/src/cmd/grap
408
.SH "SEE ALSO"
409
.IR pic (1), 
410
.IR 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.