Blob


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
234 point
235 .I "optname expr, expr
236 maps the point to the named coordinate system.
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.