|
プロットグラフコントロール(PlotGraph)
プロットグラフコントロールでは、XYデータをプロットことができます。
散布図や、折れ線グラフを描くことができます。
データの表示の手順
データを表示するためには以下の4つの手順で行います。
1)AddPenメソッドにより、表示したいデータの種類の数だけペンを追加する。
2)SetXRangeメソッドにより、X軸の範囲を設定する。
3)SelectPenメソッドで、現在アクティブにしたいペン(データ)を設定する。
4)AddDataメソッドによりデータを表示する(ClearDataメソッドでデータのみを初期化できます)。
以下の左側のサンプルではグラフコントロール自身のOnInitializeイベントで2本のペンを追加し、X軸の範囲を0~50としています。
その後、「Load data」ボタンが押されると、ファイルからデータを読み込み、AddDataによりデータを表示しています。
|
// グラフコントロール自身のイベント。2本のペンを追加し、X軸の範囲を0~50としています。
event OnInitialize()
{
this.AddPen("", "", "default", "analog", "periodic", 0, 100, 0, 100);
this.AddPen("", "", "default", "analog", "periodic", 0, 100, 0, 50);
this.SetXRange(0, 50);
this.SelectPen(1);
}
// 「Load data」ボタンのイベント。ClearDataによりグラフのデータをクリアしてからAddDataしています。
event OnMouseUp(button)
{
var vData;
if (::LoadCsvFile("csvsample.csv", vData) == FALSE)
{
::OpenMessageBox("Can't open file.");
return;
}
parent.Graph1.ClearData();
parent.Graph1.AddData(1, vData[1,0:50], vData[2,0:50]);
parent.Graph1.AddData(2, vData[1,0:50], vData[3,0:50]);
…
}
|
|
|
AddDataは、1点ずつ点を追加することもできますし、まとめて点を追加することもできます。
上例では、ファイル内のデータをまとめて追加しています。
例えば以下の例では、ペン1に対して、CSVファイルの1列目(0から数えて)をX軸、2列目をY軸のデータとして、0から50行目までのデータを表示しています。
すべての行のデータを表示させたい場合はAddData(1, vData[1,], vData[2,])とします。
詳細は「スクリプト」を参照して下さい。
parent.Graph1.AddData(1, vData[1,0:50], vData[2,0:50]);
|
|
データ数に制限を設ける
ペンのMaxPointsプロパティを用いて、ペン毎にデータ数の制限を設定することができます。
制限を設定すると、AddDataによって追加されたデータ数が制限数を越えた場合に、古いデータから順に自動的に削除されます。
以下のサンプルは、データ数を15に制限しています。
これは、例えば、XYで動作する対象物の最新の軌跡を表示するのに便利です。
|
// グラフコントロール自身のイベント
event OnInitialize()
{
…
this.SetPenProperty(1, "MaxPoints",15);
this. SetPenProperty (2, " MaxPoints ", 15);
…
}
|
|
|
データの削除は以下の3つのタイミングで行われます。
1)MaxPointsプロパティで設定した制限数を超えた場合、古い順から自動的に削除する。
2)画面表示時、画面範囲から外れたデータは自動的に削除される(この設定はAutoDeleteModeプロパティで変更可能)。
3)ClearData/ClearPen/ClearAllメソッドにより全てのデータが一括で削除される。
データの削除を行わずAddDataを永遠に繰り返すと、プロット点が増加し続け、メモリ不足によりシステムがダウンする恐れがありますので注意してください。
|
|
グラフを線、点、バーグラフで表現する
|
|
PlotLineSize/ PlotPointSizeプロパティでは、グラフを線で表示するか、点で表示するか、あるいは点と線の両方で表示するのかを設定できます。
PlotBarSizeプロパティでは、グラフのバーグラフ表示を設定できます。
設定方法のサンプルは以下のラジオボタンコントロールの処理を参考にして下さい。
|
|
|
線のみで表示した場合(デフォルト)です。左例では、線の太さを1、点のサイズを0にしています。
PlotLineSize = 1
PlotPointSize = 0
PlotBarSize = 0
|
|
|
|
|
|
点のみで表示した場合です。左例では、線の太さを0、点のサイズを2にしています。
PlotLineSize = 0
PlotPointSize = 2
PlotBarSize = 0
|
|
|
|
|
|
点と線、両方で表示した場合です。左例では、線の太さを1、点のサイズを4にしています。
PlotLineSize = 1
PlotPointSize = 4
PlotBarSize = 0
|
|
|
|
|
|
ペン1のみをバーグラフで表示しています。
PlotLineSize = -1
PlotPointSize = -1
PlotBarSize = -1
SetPenPlotSize(1, 0, 0, 0, 0, 2);
SetPenPlotSize(2, 1, 0, 0, 0, 0);
|
|
ペン毎にグラフ点やグラフ線のサイズを変えたい場合は、PlotLineSize/ PlotPointSize/ PlotBarSizeを-1に設定し、SetPenPlotSizeメソッドでペン毎にサイズを指定します。
|
|
複数のペンをバーグラフで描画を行う場合、バーの表示が重ならないようにペン毎に横にずらして描画したい時は、PlotBarAdjustmentプロパティをTRUEにします。
|
|
グラフに警報ラインなどの横線を描く
グラフに横線を描くには、「グループ全体にラインを定義する」方法と「ペン毎にラインを定義する」方法があります。
前者で描かれるラインをグループライン、後者をペンラインと呼びます。
グループラインを描くにはAddGroupLineメソッドを用います。
グループラインの最大値と最小値はデフォルトで100と0に設定されているため、グループラインを50の位置に描画すると、ちょうどグラフの中央にラインが描かれます。
|
AddGroupLine(50); // (現在選択されているグループに)50のラインを追加
|
|
ペンラインを描くにはAddPenLineメソッドを用います。ペンラインはペンを追加したときに設定した最大値と最小値に対し描画されます。ペンの画面の位置に従って、ラインも移動します。
|
AddPenLine(1, 50); // ペン1に50のラインを追加
|
|
|
ペン情報の取得及び設定
GetPenProperty/SetPenPropertyを用いてペンの情報の取得、設定を行うことができます。
|
this.SetPenProperty(1, "Title", "Pen01");
|
|
以下はペンのプロパティ一覧です。
プロパティ名
|
型
|
説明
|
Title
|
文字
|
タイトル(左中央に表示される)。
|
Unit
|
文字
|
単位(タイトルと共に左中央に表示される)
|
Color
|
色文字
|
グラフの線の色。"default"を指定すると自動的に最適な色が設定されます。
|
DataType
|
文字
|
データタイプ。以下の11つのタイプから選択できます。
"boolean" - ビット型のデータとして表示。
"analog" - 数値型のデータとして表示。
"enumeration" - 数値型ですが、小数点以下が四捨五入され、整数のデータとして表示。
"powerfactor00" - 力率データ(-0~1~+0)として表示。
"powerfactor05" - 力率データ(-0.5~1~+0.5)として表示。
"powerfactor00p" - 力率データ(-0~100~+0)として表示。(%換算)
"powerfactor05p" - 力率データ(-50~100~+50)として表示。(%換算)
力率データの場合は、グラフに流し込む生データは次のようにする必要があります。例えば力率データ(-0~+0)の場合、生データは0 ~ 1000まで変化する数値とします。このとき、生データ0は力率-0で1000は力率0とします。(500の時、力率1)そして、引数Low(最小値)を0、引数High(最大値)を1000と指定します。生データは自動的に力率に変換され、適切にグラフ表示されます。
"powerfactor00r" - 力率データ(-0~1~+0)として表示。
"powerfactor05r" - 力率データ(-0.5~1~+0.5)として表示。
"powerfactor00rp" - 力率データ(-0~100~+0)として表示。(%換算)
"powerfactor05rp" - 力率データ(-50~100~+50)として表示。(%換算)
力率データの場合は、グラフに流し込む生データは力率値そのものである必要があります。そして、引数Low(最小値)及びHigh(最大値)は無視されます。
|
PlotType
|
文字
|
プロットタイプ。"periodic" "changebased" "colorbar" から選択します。periodicの場合、プロットの点が結ばれてグラフの線が描画されます。changebasedの場合、階段状にグラフの線が描画されます。ビットの場合通常changebasedを選択します。colorbarの場合、横にバーが表示され、値毎に決められた色で塗りつぶされます。
|
Low
|
数値
|
データの最小値。最小値より小さいデータは表示されません。
|
High
|
数値
|
データの最大値。最大値より大きいデータは表示されません。
|
DisplayLow
|
数値
|
表示範囲の下位置。0から100までの範囲で指定します。表示範囲とは、Y軸の最上位置及び最小位置がグラフのどこに位置するのかを%で表現します。例えば表示範囲開始が20%で表示範囲終了を40%と設定すると、グラフエリア内でのグラフ描画は、グリッドの下から20%の位置から40%の位置までの範囲で描画が行われます。
|
DisplayHigh
|
数値
|
表示範囲の上位置。0から100までで指定します。
|
Visible
|
ブール
|
ペン(グラフ線)を表示するかどうか。FALSEにするとペンを一時的に非表示にすることができます。
|
MaxPoints
|
数値
|
表示するプロット数(データ数)の最大。0の時、無制限(デフォルト0)。最大数を超えてAddDataを行うと、古いデータから順番に削除されます。
|
LineSize
|
数値
|
グラフ線の太さ。0の時、線は表示されない。デフォルト1。PlotLineSizeプロパティが-1の時有効。
|
LineStyle
|
文字
|
ラインのスタイル。
"SOLID" "DASH" "DOT" "DASHDOT" "DASHDOTDOT"から選択します。デフォルトは"SOLID"です。
|
PointSize
|
数値
|
グラフ点のサイズ。0の時、点は表示されない。デフォルト0。PlotPointSizeプロパティが-1の時有効。
|
LackLineSize
|
数値
|
欠損データがある場合、そこを結ぶためのグラフ線の太さ。0の時、線は表示されない。デフォルト1。PlotLackLineSizeプロパティが-1の時有効。
|
LackPointSize
|
数値
|
欠損データ点のサイズ。0の時、点は表示されない。デフォルト0。PlotLackPointSizeプロパティが-1の時有効。
|
BarSize
|
数値
|
バーグラフのサイズ。0の時、バーは表示されない。デフォルト0。PlotBarSizeプロパティが-1の時有効。
|
ColorBarAlpha
|
数値
|
PlotTypeにてcolorbarを選択した場合の、横向きバー表示の透過度(0~1)。デフォルト0.7。PlotColorBarAlphaプロパティが-1の時有効。
|
ColorBarColor
|
文字
|
PlotTypeにてcolorbarを選択した場合の、バーの表示色を列挙する。左から順番に、値が0のときの色、1のときの色、2の時の色、、と色をRGBにてカンマ区切りで指定する。
例)#00FF00,#FF0000
0(FALSE)のときに緑色(#00FF00)で、1(TRUE)のときに赤色(#FF0000)で描画する。
例)#00FF00,#FF0000,#0000FF
0のときに緑色(#00FF00)、1のときに赤色(#FF0000)、2のときに青(#0000FF)で描画する。
PlotColorBarColorプロパティが空文字の時有効。
|
Temp
|
文字
|
文字を格納できます。自由に使用してください。
|
|
グループ情報の取得及び設定
GetGroupProperty/SetGroupPropertyを用いてグループの情報の取得、設定を行うことができます。
|
this.SetGroupProperty(1, "GroupTitle", "Group01");
|
|
以下はグループのプロパティ一覧です。
プロパティ名
|
型
|
説明
|
GroupTitle
|
文字
|
グループタイトル。
|
StartupXSpan
|
数値
|
グループ切り替え時に設定するX軸のスパン。グループ切り替え時にX軸のスパンを特に切り替える必要がない場合、0を指定してください。ヒストリカルグラフ、ヒストリカルトレンドグラフの場合、X軸のスパンには時間を秒単位で指定してください。例えば1時間の場合、3600(秒)を指定します。
|
Low
|
数値
|
グループラインの最小値。デフォルト0。
|
High
|
数値
|
グループラインの最大値。デフォルト100。
|
Temp
|
文字
|
文字を格納できます。自由に使用して下さい。
|
|
ライン情報の取得及び設定
ラインは各グループおよび各ペンに追加することができます。
グループに追加したラインの情報の取得、設定はGetGroupLineProperty/SetGroupLinePropertyで行います。
ペンに追加したラインの情報の取得、設定はGetPenLineProperty/SetPenLinePropertyで行います。
|
this.SetGroupLineProperty(1, "Value", 50);
|
|
以下はラインのプロパティ一覧です。
プロパティ名
|
型
|
説明
|
Value
|
数値
|
ラインの値。グループラインの場合、グループプロパティのLow/Highに対してX軸方向のラインが表示されます。ペンラインの場合、ペンプロパティのLow/Highに対してX軸方向のラインが表示されます。
|
LineColor
|
色文字
|
ラインの色(例 "#00FF00" など)。空文字""を指定すると、デフォルト色(グループプロパティの場合、白色。ペンラインの場合、ペンの色。)で描画されます。デフォルトはデフォルト色です。
|
LineStyle
|
文字
|
ラインのスタイル。
"SOLID" "DASH" "DOT" "DASHDOT" "DASHDOTDOT"から選択します。デフォルトは"DOT"です。
|
LineSize
|
数値
|
ラインの太さ。デフォルトは1です。
|
Text1
|
文字
|
ラインの右側に表示する文字。
|
Text2
|
文字
|
ラインの左側に表示する文字。
|
TextColor
|
色文字
|
文字の色(例 "#00FF00" など)。空文字""を指定すると、ラインの色で描画されます。デフォルトはライン色です。
|
TextPosition
|
文字
|
文字の位置。"UPPER" - 線の上(デフォルト)。"LOWER" - 線の下。
|
Visible
|
ブール
|
ラインを表示するかどうか。FALSEにするとラインを一時的に非表示にすることができます。
|
|
|