Node:Y-axis-column, Next:print-Y-axis Penultimate, Previous:Y Axis Element, Up:print-Y-axis
The preceding functions provide all the tools needed to construct a function that generates a list of numbered and blank strings to insert as the label for the vertical axis:
(defun Y-axis-column (height width-of-label) "Construct list of Y axis labels and blank strings. For HEIGHT of line above base and WIDTH-OF-LABEL." (let (Y-axis) (while (> height 1) (if (zerop (% height Y-axis-label-spacing)) ;; Insert label. (setq Y-axis (cons (Y-axis-element height width-of-label) Y-axis)) ;; Else, insert blanks. (setq Y-axis (cons (make-string width-of-label ? ) Y-axis))) (setq height (1- height))) ;; Insert base line. (setq Y-axis (cons (Y-axis-element 1 width-of-label) Y-axis)) (nreverse Y-axis)))
In this function, we start with the value of height
and
repetitively subtract one from its value. After each subtraction, we
test to see whether the value is an integral multiple of the
Y-axis-label-spacing
. If it is, we construct a numbered label
using the Y-axis-element
function; if not, we construct a
blank label using the make-string
function. The base line
consists of the number one followed by a tic mark.