Previous: Y-axis-column, Up: print-Y-axis

C.2.4 The Not Quite Final Version of print-Y-axis

The list constructed by the Y-axis-column function is passed to the print-Y-axis function, which inserts the list as a column.

     (defun print-Y-axis (height full-Y-label-width)
       "Insert Y axis using HEIGHT and FULL-Y-LABEL-WIDTH.
     Height must be the maximum height of the graph.
     Full width is the width of the highest label element."
     ;; Value of height and full-Y-label-width
     ;; are passed by `print-graph'.
       (let ((start (point)))
          (Y-axis-column height full-Y-label-width))
         ;; Place point ready for inserting graph.
         (goto-char start)
         ;; Move point forward by value of full-Y-label-width
         (forward-char full-Y-label-width)))

The print-Y-axis uses the insert-rectangle function to insert the Y axis labels created by the Y-axis-column function. In addition, it places point at the correct position for printing the body of the graph.

You can test print-Y-axis:

  1. Install
  2. Copy the following expression:
              (print-Y-axis 12 5)
  3. Switch to the *scratch* buffer and place the cursor where you want the axis labels to start.
  4. Type M-: (eval-expression).
  5. Yank the graph-body-print expression into the minibuffer with C-y (yank).
  6. Press <RET> to evaluate the expression.

Emacs will print labels vertically, the top one being ‘10 - . (The print-graph function will pass the value of height-of-top-line, which in this case will end up as 15, thereby getting rid of what might appear as a bug.)