Sortieren von Daten (Diagrammsteuerelemente)
Durch das Sortieren wird die Reihenfolge von den Datenpunkten einer Reihe basierend auf einem Datenpunktwert geändert. Sie können eine aufsteigende, absteigende oder benutzerdefinierte Sortierreihenfolge verwenden.
Ausführen von aufsteigenden oder absteigenden Sortierungen
Verwenden Sie zum Sortieren von Daten die Sort-Methode im Series-Objekt oder DataManipulator-Objekt. Sie können die Daten in aufsteigender oder absteigender Reihenfolge sortieren.
Im folgenden Code wird veranschaulicht, wie Sie die Reihendaten mithilfe des standardmäßigen ersten Y-Wert sortieren.
' 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");
Standardmäßig wird der erste Y-Wert der Datenpunkte für die Sortierung verwendet. Sie können die Datenpunkte jedoch auch anhand des X-Werts oder eines anderen Y-Werts, z. B. Y2, sortieren. Darüber hinaus ist eine Sortierung anhand der AxisLabel-Eigenschaft jedes Werts möglich.
Im folgenden Code wird veranschaulicht, wie Sie die Reihendaten mithilfe nicht standardmäßiger Werte sortieren.
' 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");
Sortieren mehrerer Reihen
Sie können mehrere ausgerichtete Reihe sortieren, indem Sie DataManipulator.Sort verwenden und eine durch Trennzeichen getrennte Liste der Reihennamen angeben. Bei dieser Methode werden alle Punkte in allen Reihen basierend auf den entsprechenden Werten aus der ersten aufgeführten Reihe sortiert. Anders ausgedrückt werden die Änderungen an der Reihenfolge von Datenpunkten in der ersten Reihe in alle Reihen in der Liste kopiert.
Tipp
Wenn Sie mithilfe von DataManipulator.Sort mehrere Reihen sortieren, müssen die Daten aus allen Reihen ausgerichtet sein. Andernfalls löst die Methode eine Ausnahme aus. Weitere Informationen zum Ausrichten von Daten finden Sie unter Ausrichten von Daten.
Im folgenden Code wird veranschaulicht, wie Sie mehrere Reihen in absteigender Reihenfolge sortieren.
Chart1.DataManipulator.Sort(PointsSortOrder.Descending, "ProductSales,ProductPrice")
Chart1.DataManipulator.Sort(PointsSortOrder.Descending, "ProductSales,ProductPrice");
Ausführen von benutzerdefinierten Sortierungen
Verwenden Sie die IComparer-Schnittstelle, um eine benutzerdefinierte Sortierung zu definieren. Die Compare-Methode dieser Schnittstelle lässt zwei DataPoint-Objekte als Argumente zu. Sie gibt einen Wert kleiner 0 (null) zurück, wenn das erste Objekt kleiner ist als das zweite. Wenn beide Objekte gleich sind, wird als Wert 0 (null) zurückgegeben, und wenn das erste Objekte größer ist als das zweite, wird ein Wert größer 0 (null) zurückgegeben.
In diesem Beispiel wird veranschaulicht, wie Sie die IComparer-Schnittstelle zum Bereitstellen benutzerdefinierter Sortierungslogik verwenden.
' 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;
}
}
}
Siehe auch
Verweis
System.Windows.Forms.DataVisualization.Charting
System.Web.UI.DataVisualization.Charting