Ordenar datos (Controles Chart)
La ordenación cambia el orden de los puntos de datos de una serie en función del valor de un punto de datos. Puede usar criterios de ordenación ascendentes, descendentes o personalizados.
Realizar ordenaciones ascendentes o descendentes
Para ordenar datos, use el método Sort del objeto Series o DataManipulator. Puede usar un criterio de ordenación ascendente o descendente.
En el siguiente código, se muestra la ordenación de series de datos mediante el primer valor Y predeterminado.
' 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");
De forma predeterminada, se usa el primer valor Y de los puntos de datos para la ordenación. No obstante, puede ordenar los puntos de datos mediante su valor X o con cualquiera de su otros valores Y, como Y2. También puede ordenar por la propiedad AxisLabel de cada valor.
En el siguiente código, se muestra la ordenación de series de datos mediante valores de punto no predeterminados.
' 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");
Ordenar varias series
Puede usar DataManipulator.Sort para ordenar varias series alineadas especificando una lista de nombres de series separados por comas. Este método ordena todos los puntos de todas las series basándose en sus valores correspondientes a partir de la primera serie enumerada. Es decir, se duplican los cambios en el orden de los puntos de datos de la primera serie en todas las series de la lista.
Nota
Si usa DataManipulator.Sort para ordenar varias series, se deben alinear los datos de todas ellas. De lo contrario, el método produce una excepción. Para obtener más información sobre cómo alinear los datos, vea Alinear datos.
En el siguiente código, se muestra la ordenación de varias series en orden descendente.
Chart1.DataManipulator.Sort(PointsSortOrder.Descending, "ProductSales,ProductPrice")
Chart1.DataManipulator.Sort(PointsSortOrder.Descending, "ProductSales,ProductPrice");
Realizar ordenaciones personalizadas
Para realizar una ordenación personalizada, use la interfaz IComparer. El método Compare de esta interfaz recibe dos objetos DataPoint como argumentos. Debe devolver un valor menor que cero si el primer objeto es menor que el segundo, cero si son iguales y un valor mayor que cero si el primer objeto es mayor que el segundo.
En este ejemplo se muestra el uso de la interfaz IComparer para proporcionar la lógica de ordenación personalizada.
' 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;
}
}
}
Vea también
Referencia
System.Windows.Forms.DataVisualization.Charting
System.Web.UI.DataVisualization.Charting