挿入処理では点の右側および下側のバッファが埋められるため、新しいグラフ描画関数では、まずY軸(垂直軸)を、次にグラフ本体を、そして最後にX軸(水平軸)を描画するようにすべきです。この順序により、関数の内容が明確になります:
完成したグラフのイメージ例を以下に示します。
10 -
*
* *
* **
* ***
5 - * *******
* *** *******
*************
***************
1 - ****************
| | | |
1 5 10 15
このグラフでは、縦軸と横軸の両方に数値が振られています。しかし、グラフによっては横軸が時間となっており、次のように月単位で表記した方が適切です:
5 - *
* ** *
*******
********** **
1 - **************
| ^ |
Jan June Jan
実際、少し考えれば、縦方向や横方向のさまざまなラベル付け方式を容易に考案できる。作業が複雑になる可能性もある。しかし、複雑さは混乱を招く。それを許容するよりも、まずはシンプルなラベル付け方式を選択し、後で修正したり置き換えたりする方が得策である。
これらの検討を踏まえ、print-graph 関数の構成案を以下のように提示します。
(defun print-graph (numbers-list)
"documentation..."
(let ((height ...
...))
(print-Y-axis height ... )
(graph-body-print numbers-list)
(print-X-axis ... )))
print-graph関数定義の各部分について、順に見ていきましょう。