Partager via


Filtrage des données dans les contrôles Chart

Le filtrage des données supprime des points de données d'une série ou marque le point de données comme étant vide en se basant sur un jeu de critères de filtrage.Lorsque vous utilisez des données, n'oubliez pas qu'une opération de filtrage peut modifier les données des séries d'origine ou stocker la sortie dans une série de sortie.

Avertissement

Lors du filtrage de plusieurs séries, veillez à ce que celles-ci soient alignées.Sinon, la méthode de filtrage lève une exception.Pour plus d'informations, consultez Alignement des données.

Filtrage des données

Les propriétés et méthodes suivantes de la classe DataManipulator servent au filtrage :

  • Propriété FilterSetEmptyPoints
    Spécifie s'il faut supprimer des points de données de la série ou les marquer comme étant des points vides.

  • Propriété FilterMatchedPoints
    Spécifie s'il faut supprimer les points de données qui correspondent aux critères.Si elle a la valeur False, les points qui ne correspondent pas aux critères spécifiés sont filtrés.

    Cette propriété s'applique uniquement à la méthode Filter.

  • Méthode Filter
    Filtre les points de données d'une série à l'aide d'une plage de dates ou d'heures, d'une comparaison d'une valeur de point de données avec une valeur numérique ou d'autres critères personnalisés définis par l'utilisateur.

  • Méthode FilterTopN
    Filtre les points de données d'une série à l'exception de ceux qui présentent les plus grandes ou plus petites valeurs dans la série.

Filtrage par plages de dates ou d'heures

Utilisez la méthode Filter pour effectuer un filtrage par plages de dates ou d'heures lorsque les valeurs X des points de données sont des dates (la propriété Series.XValueType de la série a la valeur DateTime).Les données de la série sont fractionnées en plages où les éléments définis de la plage sont filtrés.Pour définir une plage de dates, spécifiez deux paramètres :

  • Un type de plage dans la classe DateRangeType.

  • Une chaîne comprenant les éléments de la plage.Cette chaîne peut inclure des virgules et des tirets.Par exemple, "1-10, 20, 25".

Le code suivant filtre tous les points de données correspondant aux week-ends d'une série appelée "MySeries", puis supprime tous les points de données à l'exception du premier du mois.

With Chart1.DataManipulator
        ' Remove weekends.
          .Filter(DateRangeType.DayOfWeek, "0,6", "MySeries")
        
        ' Remove all days of month except of the first. Our 
        ' criteria is the first of each month, and we are 
        ' filtering points that DO NOT match the criteria.
          .FilterMatchedPoints = False
          .Filter(DateRangeType.DayOfMonth, "1", "MySeries")
End With
DataManipulator myDataManip = Chart1.DataManipulator;
// Remove weekends.
  myDataManip.Filter(DateRangeType.DayOfWeek, "0,6", "MySeries");

// Remove all days of month except of the first. Our 
// criteria is the first of each month, and we are 
// filtering points that DO NOT match the criteria.
  myDataManip.FilterMatchedPoints = false;
  myDataManip.Filter(DateRangeType.DayOfMonth, "1", "MySeries");

Filtrage de toutes les données à l'exception des extrêmes

Utilisez la méthode FilterTopN pour filtrer tous les points d'une série à l'exception d'un nombre spécifié de points présentant les plus grandes ou les plus petites valeurs de point.Pour utiliser cette méthode, spécifiez les critères suivants :

  • Nombre total de points à conserver.

  • Valeurs Y à filtrer.Par exemple, "Y2".La valeur par défaut est la première valeur Y ("Y").

  • Paramétrage indiquant s'il convient d'obtenir les plus grandes valeurs.Si elle a la valeur False, FilterTopN conserve les plus petites valeurs.La valeur par défaut est True.

L'exemple de code ci-dessous illustre la manière d'utiliser la méthode FilterTopN.

With Chart1.DataManipulator
        ' Get the top 10 sales persons, and overwrite the
        ' original series data with the new data.
        ' We assume the first Y value of the points stores
        ' the sales values.
        .FilterTopN(10, "MySeries")
        
        ' Get the 5 points with the smallest X values. 
        ' The filtered data is stored in an output series.
        .FilterTopN(5, "MySeries", "ResultSeries", "X", False)
End With
DataManipulator myDataManip = Chart1.DataManipulator;
// Get the top 10 sales persons, and overwrite the
// original series data with the new data.
// We assume the first Y value of the points stores
// the sales values.
myDataManip.FilterTopN(10, "MySeries"); 

// Get the 5 points with the smallest X values. 
// The filtered data is stored in an output series.
myDataManip.FilterTopN(5, "MySeries", "ResultSeries", "X", false); 

Filtrage par valeurs

Utilisez la méthode Filter pour effectuer un filtrage basé sur la comparaison de valeurs.Spécifiez les paramètres suivants :

  • Méthode de comparaison de la classe CompareMethod.

  • Valeur constante pour la comparaison.

  • Valeurs Y à filtrer.Par exemple, "Y2".La valeur par défaut est la première valeur Y ("Y").

Le code suivant montre comment filtrer des points en les comparant avec une constante.

With Chart1.DataManipulator
    ' Filtered points are only marked as empty.
    .FilterSetEmptyPoints = True
    ' Filters all points where the first Y value is greater than 100. 
    ' The input series is overwritten with the filtered data.    
    .Filter(CompareMethod.More, 100, "MySeries")
    ' Filters all points where the X value is less than, or equal to, a specific date.    
    ' The resulting data is stored in an output series, preserving the original data.    
    .Filter(CompareMethod.LessOrEqual, DateTime.Parse("1/1/2001").ToOADate(), "MySeries", "ResultSeries", "X")
End With
DataManipulator myDataManip = Chart1.DataManipulator;

// Filtered points are only marked as empty.
myDataManip.FilterSetEmptyPoints = true;

// Filters all points where the first Y value is greater than 100. 
// The input series is overwritten with the filtered data.    
myDataManip.Filter(CompareMethod.More, 100, "MySeries");

// Filters all points where the X value is less than, or equal to, a specific date.    
// The resulting data is stored in an output series, preserving the original data.    
myDataManip.Filter(CompareMethod.LessOrEqual, DateTime.Parse("1/1/2001").ToOADate(), "MySeries", "ResultSeries", "X");

Filtrage avec des critères personnalisés

Utilisez l'interface IDataPointFilter pour définir des critères personnalisés.Cette interface expose la méthode FilterDataPoint, qui identifie les points de données à supprimer.La liste suivante présente les paramètres de la méthode FilterDataPoint et sa valeur de retour :

  • Objet de point de données à filtrer.

  • Série à laquelle appartient le point de données.

  • Index du point de données dans l'objet de collection Series.Points.

  • Retourne True si le point doit être filtré ; sinon, retourne False.

Le code suivant montre comment filtrer des points avec des critères définis par l'utilisateur.

' Filters points using custom criteria.
Dim filter As New MyPointFilter()
Chart1.DataManipulator.Filter(filter, "MySeries")

' User defined filtering criteria. Filters all points with 
' Y values greater than 100 or less than 10.
Public Class MyPointFilter  Implements IDataPointFilter
    Private Function FilterDataPoints(ByVal point As DataPoint, ByVal series As Series, ByVal pointIndex As Int32) _
      As Boolean Implements IDataPointFilter.FilterDataPoint
      
      If point.YValues(0) > 100.0 Or point.YValues(0) < 10.0 Then
            FilterDataPoints = True
        Else
            FilterDataPoints = False   
        End If          
    End Function
End Class
MyPointFilter filter = new MyPointFilter();
Chart1.DataManipulator.Filter(filter, "MySeries");

// User defined filtering criteria. Filters all points with 
// Y values greater than 100 or less than 10.
public class MyPointFilter : IDataPointFilter 
{    
    private bool FilterDataPoints(DataPoint point, Series series, Int32 pointIndex)
    {
        if((point.YValues(0)>100) || (point.YValues(0)<10))
        {
            FilterDataPoints = true;
        }
        else 
        {
            FilterDataPoints = false;
        }
    }
}

Filtrage de plusieurs séries

Pour effectuer un filtrage sur plusieurs séries, spécifiez leur nom dans une liste séparée par des virgules dans la chaîne de séries d'entrée.Tous les points de chaque série seront filtrés selon la première série de la liste.En d'autres termes, les points de données ayant le même index sont supprimés de toutes les séries si le point de données ayant cet index dans la première série est supprimé.

Voir aussi

Référence

System.Windows.Forms.DataVisualization.Charting

System.Web.UI.DataVisualization.Charting

Autres ressources

Liaison et manipulation de données