グラフ コントロールでのデータ ポイントの検索
値の範囲または特定の値について、系列内のデータ ポイントの X 値と Y 値を検索できます。特定の値のデータ ポイントを検索できると、次のような場合に役立ちます。
値の範囲を検索する場合。
特定の値を持つポイントの外観を変更する場合。
ポイント ラベルを設定する場合。
カスタム描画にポイントの位置を使用する場合。
データ ポイントの検索
Series.Points コレクション プロパティには、ポイントを計算するメソッドがいくつかあります。
FindValue
系列内で、指定した値を持つ最初のポイントを返します。FindMaxValue
系列内で、最も大きな値を持つ最初のポイントを返します。FindMinValue
系列内で、最も小さな値を持つ最初のポイントを返します。
注意
検索条件に合うポイントがない場合、これらのメソッドは null 値を返します。
ループ内にこれらのメソッドを使用して、検索条件に合うすべてのポイントを特定します。事前に定義した開始インデックス以降のすべてのポイントを検索するには、メソッドのいずれかを使用し、startFromIndex パラメーターを指定します。このパラメーターを指定すると、メソッドでも、返されるデータ ポイントのインデックスを示すときに使用されます。
次のコードは、最初の Y 値でデータ ポイントを検索する方法の例です。
' Find the first data point with the maximum Y value.
Dim maxDataPoint As DataPoint = mySeries.Points().FindMaxValue()
' Find the first data point with the minimum Y value.
Dim minDataPoint As DataPoint = mySeries.Points().FindMinValue()
' Find the first data point with a first Y value of 10.
Dim dataPoint As DataPoint = mySeries.Points().FindValue(10.0)
// Find the first data point with the maximum Y value.
DataPoint maxDataPoint = mySeries.Points().FindMaxValue();
// Find the first data point with the minimum Y value.
DataPoint minDataPoint = mySeries.Points().FindMinValue();
// Find the first data point with a first Y value of 10.
DataPoint dataPoint = mySeries.Points().FindValue(10);
X または Y2 などの値を検索するには、値の名前を指定します。次のコードは、X 値でデータ ポイントを検索する方法の例です。
' Find first data point with the maximum X value.
Dim maxDataPoint As DataPoint = mySeries.Points().FindMaxValue("X")
' Find the first data point with the minimum second Y value.
Dim minDataPoint As DataPoint = mySeries.Points().FindMinValue("Y2")
' Find first data point with an X value of "1/1/2001".
Dim dataPoint As DataPoint = mySeries.Points().FindValue(DateTime.Parse("1/1/2001").ToOADate(), "X")
// Find first data point with the maximum X value.
DataPoint maxDataPoint = mySeries.Points().FindMaxValue("X");
// Find the first data point with the minimum second Y value.
DataPoint minDataPoint = mySeries.Points().FindMinValue("Y2");
// Find first data point with an X value of "1/1/2001".
DataPoint dataPoint = mySeries.Points().FindValue(DateTime.Parse("1/1/2001").ToOADate(), "X");
複数ポイントの検索
検索条件に合うすべてのデータ ポイントを検索するには:
startFromIndex パラメーターを使用して検索の開始ポイント インデックスを指定します。
ループ内でメソッドを呼び出し、以降のメソッドの呼び出しごとにインデックスをインクリメントします。
次のコードは、値 10 の 2 番目の Y 値を検索し、結果のデータ ポイントの色をリセットする方法の例です。
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Find all points with a second Y value equal to 10, and change their color.
Dim index As Integer = 0
'Find first point with a Y2 value of 10.
Dim dataPoint As DataPoint = Chart1.Series("Series1").Points.FindValue(10, "Y2", index)
While Not (dataPoint Is Nothing)
dataPoint.Color = Color.FromArgb(255, 128, 128)
'Find all other data points with a second Y value 10.
index += 1
dataPoint = Chart1.Series("Series1").Points.FindValue(10, "Y2", index)
End While
End Sub
private void Page_Load(object sender, System.EventArgs e)
{
// Find all points with a second Y value equal to 10, and change their color.
int index = 0;
// Find first point with a Y2 value of 10.
DataPoint dataPoint = Chart1.Series("Series1").Points.FindValue(10, "Y2", index);
while(!(dataPoint == null))
{
dataPoint.Color = Color.FromArgb(255, 128, 128);
// Find all other data points with a second Y value 10.
index++;
dataPoint = Chart1.Series("Series1").Points.FindValue(10, "Y2", index);
}
}
参照
関連項目
System.Windows.Forms.DataVisualization.Charting
System.Web.UI.DataVisualization.Charting