grap 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416
  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.