Partager via


Tri des données (contrôles Chart)

Le tri modifie l'ordre des points de données d'une série selon une valeur de point de données. Vous pouvez utiliser un ordre de tri croissant, décroissant ou personnalisé.

Réalisation de tris croissants ou décroissants

Pour trier des données, utilisez la méthode Sort dans l'objet Series ou DataManipulator. Vous pouvez utiliser un ordre de tri croissant ou décroissant.

Le code suivant montre comment trier des données de séries à l'aide de la première valeur Y, par défaut.

' 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");

Par défaut, la première valeur Y des points de données est utilisée pour le tri. Toutefois, vous pouvez trier des points de données en utilisant leur valeur X ou toute autre valeur Y, par exemple, Y2. Vous pouvez également effectuer un tri selon la propriété AxisLabel de chaque valeur.

Le code suivant montre comment trier des données de séries à l'aide de valeurs de points autres que celles par défaut.

' 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");

Tri de plusieurs séries

Vous pouvez utiliser DataManipulator.Sort pour trier plusieurs séries alignées en spécifiant leur nom dans une liste séparée par des virgules. Cette méthode trie tous les points de toutes les séries selon leurs valeurs correspondantes dans la série qui figure en premier dans la liste. En d'autres termes, elle duplique les modifications apportées à l'ordre des points de données de la première série dans toutes les séries de la liste.

Notes

Si vous utilisez DataManipulator.Sort pour trier plusieurs séries, les données de toutes les séries doivent être alignées. Sinon, la méthode lève une exception. Pour plus d'informations sur l'alignement des données, consultez Alignement des données.

Le code suivant montre comment trier plusieurs séries dans l'ordre décroissant.

Chart1.DataManipulator.Sort(PointsSortOrder.Descending, "ProductSales,ProductPrice")
Chart1.DataManipulator.Sort(PointsSortOrder.Descending, "ProductSales,ProductPrice");

Réalisation de tris personnalisés

Pour définir un tri personnalisé, utilisez l'interface IComparer. La méthode Compare de cette interface reçoit deux objets DataPoint comme arguments. Elle doit retourner une valeur inférieure à zéro si le premier objet est inférieur au second, zéro s'ils sont égaux, et une valeur supérieure à zéro si le premier objet est supérieur au second.

Cet exemple montre comment utiliser l'interface IComparer pour fournir une logique de tri personnalisé.

' 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;
        }
    }
}

Voir aussi

Référence

System.Windows.Forms.DataVisualization.Charting

System.Web.UI.DataVisualization.Charting

Autres ressources

Liaison et manipulation de données

Filtrage des données

Alignement des données

Regroupement de données

Copie, fractionnement et fusion de données