Gri: plotting several columns

Chapters: 1: Introduction 2: Simple example 3: Invocation 4: Finer Control 5: X-Y Plots 6: Contour Plots 7: Image Plots 8: Examples 9: Gri Commands 10: Programming 11: Environment 12: Emacs Mode 13: History 14: Installation 15: Gri Bugs 16: Test Suite 17: Gri in Press 18: Acknowledgments 19: License Indices: Concepts Commands Variables | ### 8.12.5: Plotting several y-columns versus on x-column Sometimes you'll have a datafile with the first column being x, and the other columns being various things to plot versus x. For example, you might have the data
    1  8 11  9
    2 22 21 20
    3 11 10  9
    4 20 15 10
in a file called ``test.dat`'. Let's say the x-column is time, and the y-columns are the readings from three temperature sensors. The following illustrates how you might plot these data. If you think the new-command which starts this script is useful, just insert it in your ``~/.grirc`' file and you can just use it without re-defining it each time. This will give Gri a command called ``draw curves`'.

    `draw curves \xname \y1name ...'
    Draw multiple y columns versus an x column.  Assumes
    that the datafile is open, and that x is in the first
    column, with the y values in one or more following
    columns.

    The number of columns is figured out from the options,
    as is the name of the x-axis, and the labels to be
    used on each of the y curves.
    {
      # NB. the 3 below lets us skip the words 'draw'
      # and 'curves', and the name of the x-column.
      .num_of_y_columns. = {rpn wordc 3 -}
      if {rpn .num_of_y_columns. 1 >}
        show "ERROR: `draw curves' needs at least 1 y column!"
        quit
      end if

      set x name {rpn 2 wordv}
      set y name ""

      # Loop through the columns.
      .col. = 0
      while {rpn .num_of_y_columns. .col. <}
        # The x-values will be in column 1, with y-values
        # in columns 2, 3, ..., of the file.
        .ycol. = {rpn .col. 2 +}
        rewind
        read columns x=1 y=.ycol.
        # At this point, you may want to change line thickness,
        # thickness, color, dash-type, etc.  For illustration,
        # let's set dash type to the column number.
        set dash .col.
        draw curve
        draw label for last curve {rpn .col. 3 + wordv}
        .col. += 1
      end while
    }

    open test.dat
    draw curves time y1 y2 y3