グラフ コントロールでのデータの並べ替え
並べ替えを実行すると、データ ポイント値に基づいて系列のデータ ポイントの順序が変わります。昇順、降順、またはカスタムの並べ替え順を使用できます。
昇順または降順の並べ替え
データを並べ替えるには、Series オブジェクトまたは DataManipulator オブジェクトで Sort メソッドを使用します。昇順または降順の並べ替え順を使用できます。
次のコードは、既定の最初の Y 値を使用して系列を並べ替える方法の例です。
' Sort series in ascending order.
Chart1.Series("MySeries").Sort(PointsSortOrder.Ascending)
' Sort series in descending order.
Chart1.DataManipulator.Sort(PointsSortOrder.Descending, "MySeries")
// Sort series in ascending order.
Chart1.Series["MySeries"].Sort(PointsSortOrder.Ascending);
// Sort series in descending order.
Chart1.DataManipulator.Sort(PointsSortOrder.Descending, "MySeries");
既定で、データ ポイントの最初の Y 値が並べ替えに使用されます。ただし、X 値または他の Y 値 (Y2 など) を使用して、データ ポイントを並べ替えることができます。また、各値の AxisLabel プロパティで並べ替えることもできます。
次のコードは、既定できないポイント値を使用して系列を並べ替える方法の例です。
' Sort series in ascending order by X value.
Chart1.Series("MySeries").Sort(PointsSortOrder.Ascending, "X")
' Sort series in descending order by axis label.
Chart1.DataManipulator.Sort(PointsSortOrder.Descending, "AxisLabel","MySeries")
// Sort series in ascending order by X value.
Chart1.Series["MySeries"].Sort(PointsSortOrder.Ascending, "X");
// Sort series in descending order by axis label.
Chart1.DataManipulator.Sort(PointsSortOrder.Descending, "AxisLabel", "MySeries");
複数の系列の並べ替え
DataManipulator.Sort を使用して、整列した複数の系列を並べ替えるには、系列名をコンマ区切りで指定します。この方法では、一覧に含まれる最初の系列の対応する値に基づいて、すべての系列のすべてのポイントが並べ替えられます。つまり、最初の系列に含まれるデータ ポイント順の変更が、一覧のすべての系列で繰り返されます。
注意
DataManipulator.Sort を使用して複数の系列を並べ替える場合、すべての系列のデータを整列する必要があります。そうしないと、例外がスローされます。データの整列の詳細については、「データの整列」を参照してください。
次のコードは、複数の系列を降順で並べ替える方法の例です。
Chart1.DataManipulator.Sort(PointsSortOrder.Descending, "ProductSales,ProductPrice")
Chart1.DataManipulator.Sort(PointsSortOrder.Descending, "ProductSales,ProductPrice");
カスタムの並べ替え
カスタムの並べ替えを定義するには、IComparer インターフェイスを使用します。このインターフェイスの Compare メソッドは、引数として 2 つの DataPoint オブジェクトを受け取ります。最初のオブジェクトが 2 番目未満の場合、ゼロ未満の値を返します。等しい場合はゼロを返します。最初のオブジェクトが 2 番目よりも大きい場合はゼロより大きい値を返します。
次のコードは、IComparer インターフェイスを使用してカスタムの並べ替えロジックを指定する方法の例です。
' Sort series.
Chart1.DataManipulator.Sort(New CustomComparer(), "MySeries")
' Custom sorting comparing class.
Public Class CustomComparer Implements IComparer
' Compares two data points by their Labels and returns a value indicating
' if the first data point is less than, equal to, or greater than the second
' data point.
Public Function Compare(ByVal a As Object, ByVal b As Object) As Integer Implements IComparer.Compare
Dim pointA As DataPoint = a
Dim pointB As DataPoint = b
' Compares data points' Label property
If pointA.Label < pointB.Label Then
Compare = -1
ElseIf pointA.label > pointB.Label Then
Compare = 1
Else
Compare = 0
End If
End Function
End Class
// Sort series.
Chart1.DataManipulator.Sort(new CustomComparer(), "MySeries");
// Custom sorting comparing class.
public class CustomComparer : IComparer {
// Compares two data points by their Labels and returns a value indicating
// if the first data point is less than, equal to, or greater than the second
// data point.
public int Compare(object a, object b) {
DataPoint pointA = a;
DataPoint pointB = b;
// Compares data points' Label property
if ((pointA.Label < pointB.Label)) {
Compare = -1;
}
else if ((pointA.label > pointB.Label)) {
Compare = 1;
}
else {
Compare = 0;
}
}
}
参照
関連項目
System.Windows.Forms.DataVisualization.Charting
System.Web.UI.DataVisualization.Charting