Condividi tramite


Filtraggio dei dati in controlli Chart

L'operazione di filtraggio dei dati rimuove punti dati da una serie o contrassegna i punti dati come punti vuoti, in base a un set di criteri di filtro.Quando si opera con dati, considerare che un'operazione di filtraggio consente di modificare i dati della serie originale o di archiviare l'output generato in una serie di output.

Avviso

Nel filtraggio di più serie di dati, assicurasi che tutte le serie siano allineate.In caso contrario, il metodo di filtraggio genererà un'eccezione.Per ulteriori informazioni, vedere Allineamento dei dati.

Filtraggio dei dati

Le proprietà e i metodi della classe DataManipulator riportati di seguito sono utilizzati per le operazioni di filtraggio.

  • Proprietà FilterSetEmptyPoints
    Consente di specificare se rimuovere i punti dati dalla serie o contrassegnarli come punti vuoti.

  • Proprietà FilterMatchedPoints
    Consente di specificare se rimuovere i punti dati che soddisfano i criteri.Se impostata su false, verranno filtrati i punti dati che non soddisfano i criteri di filtro.

    Questa proprietà si applica solo al metodo Filter.

  • Metodo Filter
    Consente di filtrare i punti dati di una serie utilizzando un intervallo di date o ore oppure il confronto del valore dei punti dati con un valore numerico o altri criteri personalizzati definiti dall'utente.

  • Metodo FilterTopN
    Consente di filtrare i punti dati di una serie, a eccezione di quelli con i valori massimi o minimi nella serie.

Filtraggio tramite intervalli di date o ore

Utilizzare il metodo Filter per filtrare in base a intervalli di date o ore, quando i valori X dei punti dati sono valori di date (la proprietà Series.XValueType della serie è impostata su DateTime).I dati della serie vengono suddivisi in intervalli, dove gli elementi definiti nell'intervallo vengono filtrati.Per definire un intervallo di date, specificare due parametri:

  • un tipo di intervallo nella classe DateRangeType;

  • una stringa con gli elementi dell'intervallo.La stringa può includere virgole e lineette.Ad esempio, "1-10, 20, 25".

Nell'esempio di codice riportato di seguito viene eseguito il filtraggio di tutti i punti dati del fine settimana da una serie denominata "MySeries", quindi vengono rimossi tutti i punti dati a eccezione del primo del mese.

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

Filtraggio di tutti i dati a eccezione degli estremi

Utilizzare il metodo FilterTopN per filtrare tutti i punti dati di una serie a eccezione di un numero di punti specificato con i valori massimi o minimi.Per utilizzare questo metodo, specificare i criteri riportati di seguito.

  • Numero totale di punti da mantenere.

  • Valori Y da filtrare.Ad esempio, "Y2".Il valore predefinito corrisponde al primo valore Y ("Y").

  • Se ottenere o meno i valori massimi.Se impostata su False, il metodo FilterTopN manterrà i valori minimi.Il valore predefinito è True.

Nell'esempio di codice riportato di seguito viene illustrato come utilizzare il metodo 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); 

Filtraggio in base ai valori

Utilizzare il metodo Filter per filtrare i valori per confronto.Specificare i parametri riportati di seguito.

  • Un metodo di confronto nella classe CompareMethod.

  • Un valore costante per il confronto.

  • Valori Y da filtrare.Ad esempio, "Y2".Il valore predefinito corrisponde al primo valore Y ("Y").

Nell'esempio di codice riportato di seguito viene illustrato come filtrare i punti confrontandoli con una costante.

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

Filtraggio mediante criteri personalizzati

Utilizzare l'interfaccia IDataPointFilter per definire criteri personalizzati.Questa interfaccia espone il metodo FilterDataPoint il quale determina quali punti dati devono essere rimossi.Di seguito sono illustrati i parametri del metodo FilterDataPoint con il relativo valore restituito.

  • Oggetto punto dati da filtrare.

  • Serie a cui appartiene il punto dati.

  • Indice del punto dati nell'oggetto raccolta Series.Points.

  • Il metodo restituisce True se il punto deve essere filtrato, altrimenti restituisce False.

Nell'esempio di codice riportato di seguito viene illustrato come filtrare i punti mediante criteri definiti dall'utente.

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

Filtraggio di più serie

Per filtrare più serie specificare un elenco separato da virgole dei nomi delle serie in una stringa che definisce la serie di input.Tutti i punti di ciascuna serie verranno filtrati in base alla prima serie dell'elenco.Ovvero, i punti dati con lo stesso indice verranno rimossi da tutte le serie, se viene rimosso il punto dati con tale indice nella prima serie.

Vedere anche

Riferimenti

System.Windows.Forms.DataVisualization.Charting

System.Web.UI.DataVisualization.Charting

Altre risorse

Associazione e modifica dati