1grap is a pic preprocessor for drawing graphs. 2 3 grap [files] | pic | ... (mrkos!/usr/bin so far) 4 5.G1 6frame ht e wid e top dotted ... 7 sets frame around graph to specified ht and wid; 8 default ht 3, wid 2 9 default mode applies to all four sides; 10 you can set top, bot, left or right 11 to dotted, dashed, invis, solid independently 12label side "a label" "as a set of strings" adj 13 one line per label, on the four sides. 14 default side is bot 15 adj is up|down|left|right expr, to shift default position 16ticks side inout at optname expr, expr, ... 17 put ticks on side at expr, ..., and label with "expr". 18 if any expr followed by "...", label tick with "...", 19 and turn off all automatic labels. 20 if "..." contains %f's, they will be interpreted as printf 21 formatting instructions for the tick value. 22 ticks point in or out according to inout (default out) 23 tick iterator: instead of at ..., use from expr to expr by o expr 24 where o is optionally +-*/ for additive or multiplicative steps. 25 "by" can be omitted, to give steps of size 1. 26 if no ticks requested, they are supplied automatically; 27 suppress this with "ticks off". Automatic ticks normally 28 leave a margin of 7% on each side; set this to anything by 29 margin = expr 30grid side linedesc at optname expr, expr, ... 31 draw grids perpendicular (!) to side in style linedesc 32 at expr, .... Iterators and labels work as with ticks. 33coord optname x min, max y min, max log x log y (x, y literal!) 34 set range of coords and optional log scaling on either or both 35 overrides computation of data range 36 default value of optname is current coordinate system 37 (each "coord" defines new coord system) 38plot "str" at point (or just "str" at point) 39 puts it at the point. you can add rjust, ljust, above, below after "...". 40line from point to point linedesc 41 draw line from here to there. 42 "arrow" works in place of line. 43next optname at point linedesc 44 continues plot of data in optname to point; 45 default is current 46draw optname linedesc "..." 47 set mode for next: use this style from now on, 48 and plot "..." at each point (if given) 49new optname linedesc "..." 50 set mode for next, but disconnect from previous 51numberlist 52 x y1 y2 y3 ... 53 treated as 54 plot bullet at x,y1 55 plot bullet at x,y2 56 plot bullet at x,y3 57 etc., or as next at x,y1 etc., if draw specified. 58 abscissae of 1,2,3,... provided if only one input number per line 59 60point 61 optname expr, expr 62 maps the point to the coordinate system 63linedesc 64 dot|dash|invis|solid optexpr 65define name % whatever % 66 macros just like in pic 67 There are macros already defined for standard plotting 68 symbols like bullet, circle, star, plus: cat /usr/lib/grap.defines, 69 which is included if it exists. 70var = expr 71 operators are = + - * / and () 72 functions are log() and exp() (both base 10!), sin(), cos(), sqrt(); 73 rand() returns random number on [0,1); 74 max(e,e), min(e,e), int(e). 75print expr; print "..." 76 as a debugging aid, prints expr or string on the standard error 77copy "filename" 78 include this file right here 79copy thru macro 80 pass rest of input (until .G2) through macros, 81 treating each field (non-blank, or "...") as an argument. 82 "macro" can be the name of a macro previously defined, 83 or the body of one in place, like / plot $1 at $2,$3 / 84copy thru macro until "string" 85 stop copy when input is string (left-justified) 86copy "filename" thru macro until "string" 87 combinations work too 88pic remainder of line 89 copied to output with leading blanks removed. 90graph Name pic-position 91 start a new frame, place it at specified position, 92 e.g., graph Thing2 with .sw at Thing1.se + (0.1,0) 93 Name is capitalized to keep pic happy. 94.anything at beginning of line 95 copied untouched 96sh X anything X 97 passes everything between the X's to the shell; 98 as with macros, X may be any character and "anything" 99 may include newlines. 100# anything after # is a comment 101.G2 102 103Order is mostly irrelevant; no category is mandatory. 104The simplest graphs are like 105 .G1 106 1 107 2 108 .G2 109or 110 .G1 111 1 2 112 3 4 113 5 6 114 .G2 115More complicated is like 116.G1 117frame top invis right invis 118coord x 0, 10 y 1, 5 log y 119ticks left in at 1 "bottommost tick", 2,3,4,5 "top tick" 120ticks bot in from 0 to 10 by 2 121label bot "this is a" "silly graph" 122label left "left side label" "here" 123grid bot dotted at 2,4,6,8 124grid left dashed at 2.5 125 126copy thru / plot circle at $1,$2 / 1271 1 1282 1.5 1293 2 1304 1.5 13110 5 132.G2 133