Annotation of researchv10no/cmd/grap/README, revision 1.1.1.1

1.1       root        1: grap is a pic preprocessor for drawing graphs.
                      2: 
                      3:        grap [files] | pic | ...  (mrkos!/usr/bin so far)
                      4: 
                      5: .G1
                      6: frame  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
                     12: label  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
                     16: ticks 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
                     30: grid 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.
                     33: coord 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)
                     38: plot "str" at point (or just "str" at point)
                     39:        puts it at the point.  you can add rjust, ljust, above, below after "...".
                     40: line from point to point linedesc
                     41:        draw line from here to there.
                     42:        "arrow" works in place of line.
                     43: next optname at point linedesc
                     44:        continues plot of data in optname to point;
                     45:        default is current
                     46: draw optname linedesc "..."
                     47:        set mode for next:  use this style from now on,
                     48:        and plot "..." at each point (if given)
                     49: new optname linedesc "..."
                     50:        set mode for next, but disconnect from previous
                     51: numberlist
                     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: 
                     60: point
                     61:        optname expr, expr
                     62:        maps the point to the coordinate system
                     63: linedesc
                     64:        dot|dash|invis|solid optexpr
                     65: define 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.
                     70: var = 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:                        (you might check RAND_MAX at the top of grap.y)
                     75:                max(e,e), min(e,e), int(e).
                     76: print expr; print "..."
                     77:        as a debugging aid, prints expr or string on the standard error
                     78: copy "filename"
                     79:        include this file right here
                     80: copy thru macro
                     81:        pass rest of input (until .G2) through macros,
                     82:        treating each field (non-blank, or "...") as an argument.
                     83:        "macro" can be the name of a macro previously defined,
                     84:        or the body of one in place, like / plot $1 at $2,$3 /
                     85: copy thru macro until "string"
                     86:        stop copy when input is string (left-justified)
                     87: copy "filename" thru macro until "string"
                     88:        combinations work too
                     89: pic remainder of line
                     90:        copied to output with leading blanks removed.
                     91: graph Name pic-position
                     92:        start a new frame, place it at specified position,
                     93:        e.g., graph Thing2 with .sw at Thing1.se + (0.1,0)
                     94:        Name is capitalized to keep pic happy.
                     95: .anything at beginning of line
                     96:        copied untouched
                     97: sh X anything X
                     98:        passes everything between the X's to the shell;
                     99:        as with macros, X may be any character and "anything"
                    100:        may include newlines.
                    101: # anything after # is a comment
                    102: .G2
                    103: 
                    104: Order is mostly irrelevant; no category is mandatory.
                    105: The simplest graphs are like
                    106:        .G1
                    107:        1
                    108:        2
                    109:        .G2
                    110: or
                    111:        .G1
                    112:        1 2
                    113:        3 4
                    114:        5 6
                    115:        .G2
                    116: More complicated is like
                    117: .G1
                    118: frame top invis right invis
                    119: coord x 0, 10 y 1, 5 log y
                    120: ticks left in at 1 "bottommost tick", 2,3,4,5 "top tick"
                    121: ticks bot in from 0 to 10 by 2
                    122: label bot "this is a" "silly graph"
                    123: label left "left side label" "here"
                    124: grid bot dotted at 2,4,6,8
                    125: grid left dashed at 2.5
                    126: 
                    127: copy thru / plot circle at $1,$2 /
                    128: 1 1
                    129: 2 1.5
                    130: 3 2
                    131: 4 1.5
                    132: 10 5
                    133: .G2

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.