プロットグラフコントロール

<< Click to Display Table of Contents >>

マニュアル > コントロールリファレンス > データ >

プロットグラフコントロール


プロットグラフコントロール(PlotGraph)

 

 

プロットグラフコントロールでは、XYデータをプロットことができます。

散布図や、折れ線グラフを描くことができます。

 

cr_0087

 

データの表示の手順

 

データを表示するためには以下の4つの手順で行います。

1)AddPenメソッドにより、表示したいデータの種類の数だけペンを追加する。

2)SetXRangeメソッドにより、X軸の範囲を設定する。

3)SelectPenメソッドで、現在アクティブにしたいペン(データ)を設定する。

4)AddDataメソッドによりデータを表示する(ClearDataメソッドでデータのみを初期化できます)。

 

 

以下の左側のサンプルではグラフコントロール自身のOnInitializeイベントで2本のペンを追加し、X軸の範囲を0~50としています。

その後、「Load data」ボタンが押されると、ファイルからデータを読み込み、AddDataによりデータを表示しています。

 

cr_0088

 

 

 

// グラフコントロール自身のイベント。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]);
  …	
}

 

 

 


hint

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で動作する対象物の最新の軌跡を表示するのに便利です。

 

cr_0089

 

 

 

// グラフコントロール自身のイベント
event OnInitialize()
{
 …
 this.SetPenProperty(1, "MaxPoints",15);
 this. SetPenProperty (2, " MaxPoints ", 15);
 …
}

 

 

 


hint

データの削除は以下の3つのタイミングで行われます。

1)MaxPointsプロパティで設定した制限数を超えた場合、古い順から自動的に削除する。

2)画面表示時、画面範囲から外れたデータは自動的に削除される(この設定はAutoDeleteModeプロパティで変更可能)。

3)ClearData/ClearPen/ClearAllメソッドにより全てのデータが一括で削除される。

 

データの削除を行わずAddDataを永遠に繰り返すと、プロット点が増加し続け、メモリ不足によりシステムがダウンする恐れがありますので注意してください。


 

 

グラフを線、点、バーグラフで表現する

 

cr_0090


PlotLineSize/ PlotPointSizeプロパティでは、グラフを線で表示するか、点で表示するか、あるいは点と線の両方で表示するのかを設定できます。

PlotBarSizeプロパティでは、グラフのバーグラフ表示を設定できます。

 

設定方法のサンプルは以下のラジオボタンコントロールの処理を参考にして下さい。

 

 

 

 

 

 

cr_0091


線のみで表示した場合(デフォルト)です。左例では、線の太さを1、点のサイズを0にしています。

 

PlotLineSize = 1

PlotPointSize = 0

PlotBarSize = 0

 




cr_0092


点のみで表示した場合です。左例では、線の太さを0、点のサイズを2にしています。

 

PlotLineSize = 0

PlotPointSize = 2

PlotBarSize = 0




cr_0093


点と線、両方で表示した場合です。左例では、線の太さを1、点のサイズを4にしています。

 

PlotLineSize = 1

PlotPointSize = 4

PlotBarSize = 0




cr_0094


ペン1のみをバーグラフで表示しています。

 

PlotLineSize = -1

PlotPointSize = -1

PlotBarSize = -1

SetPenPlotSize(1, 0, 0, 0, 0, 2);

SetPenPlotSize(2, 1, 0, 0, 0, 0);

 


hint

ペン毎にグラフ点やグラフ線のサイズを変えたい場合は、PlotLineSize/ PlotPointSize/ PlotBarSizeを-1に設定し、SetPenPlotSizeメソッドでペン毎にサイズを指定します。


 


hint

複数のペンをバーグラフで描画を行う場合、バーの表示が重ならないようにペン毎に横にずらして描画したい時は、PlotBarAdjustmentプロパティをTRUEにします。


 

 

 

グラフに警報ラインなどの横線を描く

 

グラフに横線を描くには、「グループ全体にラインを定義する」方法と「ペン毎にラインを定義する」方法があります。

前者で描かれるラインをグループライン、後者をペンラインと呼びます。

 

グループラインを描くにはAddGroupLineメソッドを用います。

グループラインの最大値と最小値はデフォルトで100と0に設定されているため、グループラインを50の位置に描画すると、ちょうどグラフの中央にラインが描かれます。

 

 

 

AddGroupLine(50); 	// (現在選択されているグループに)50のラインを追加

 

 


hint

グループラインの最大値と最小値はSetGroupLinePropertyで変更できます。詳しくは「グループ情報の取得及び設定」を参照して下さい。


 

 

ペンラインを描くにはAddPenLineメソッドを用います。ペンラインはペンを追加したときに設定した最大値と最小値に対し描画されます。ペンの画面の位置に従って、ラインも移動します。

 

 

 

AddPenLine(1, 50);	// ペン1に50のラインを追加

 

 


hint

ペンの色や線のタイプなどを変更するにはAddGroupLine / AddPenLine のパラメータで指定するか、

SetGroupLineProperty/SetPenLinePropertyで設定します。


 

 

 

ペン情報の取得及び設定

 

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にするとラインを一時的に非表示にすることができます。