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