Processing: Class SwGraph

SwGraph.pde

GDT2DV等のモニタリング・アプリケーションソフトウェアのProcessing開発においては、いろいろなグラフ図を効率よく作成していきたい。
そこで、グラフ作成する関数群をまとめて、SwGraphとしてクラス化した。基本となる関数群は、オライリーの「ビジュアライジング・データ――Processingによる情報視覚化手法Visualizing Data by Ben Fly」を参考にした。Processingの開発者の素晴らしい著書であるので是非、一読いただきたい。
Visualizing

特に同書に収められている浮動小数点をテーブルとしてハンドリングするためのライブラリーFloatTable.pde は大変重宝する。
ーーーーーーーーーーーーーーーーーーーーーーーーーー
【ポイント1】座標軸とmap関数変換
関数map(a,b,c,d,e)
 aを範囲b-cから別の範囲d-eへ変換する。
ーーーーーーーーーーーーーーーーーーーーーーーーーー
Fig2_xy-plot

以下のコンストラクタで、SwGraphクラス・インスタンス作成時に、初期設定(X軸最小値、X軸最大値、Y軸最小値、Y軸最大値、X軸ボリュームインターバル、Y軸ボリュームインターバル、X軸マイナーボリュームインターバル、Y軸ボリュームインターバル、X軸左上角座標値、Y軸左上角座標値、X軸幅、Y軸幅)を宣言する。
SwGraph (float _xdataMin, float _xdataMax, float _ydataMin, float _ydataMax,
float _xvolumeInterval, float _yvolumeInterval, float _xvolumeIntervalMinor, float _yvolumeIntervalMinor,
float _plotX1, float _plotY1, float _plotX_W, float _plotY_W)

XY_plot

一方、グラフはdraw()関数内で以下の6つのクラス内インスタンス・メソッドで描画される。
1) void drawPoints(float _x[], float _y[], int _flag, int _color_code) //データプロットを表示する関数
2) void xdrawVolumeLabels() //X軸ボリュームラベルを表示する関数
3) void ydrawVolumeLabels()//Y軸ボリュームラベルを表示する関数
4) void drawxLabels() //X軸のメジャー罫線を描画する関数
5) void drawxLabels() //Y軸のメジャー罫線を描画する関数
6) void drawAxisLabels(String _ylabel, String _xlabel) //Y軸、X軸のラベルを記載する関数

7) void drawDataPoints() //保存した過去のデータプロットをトレンド表示する関数

setup()関数内で、SwGraphのインスタンスを生成し、コンストラクタで初期値を指定する。次にdraw()関数内でグラフを描画するdraw_graphs()関数を呼び出す。draw_graphs()関数内では、上記6つのクラス内インスタンス・メソッドをインスタンスに送ってグラフを描画する。

——————————————————————–

今回は、実際には、X軸にプロットするSVVをlog表示とするために、drawDataPoints()関数にて、リアルタイムに保存したtsvデータファイルから読み込んだ過去のデータについてもトレンドも表示できるように、以下のようにインスタンスメソッドを2つ追加した。