Freigeben über


Gruppieren von Daten in Diagrammsteuerelementen

Durch die Datenfilterung werden Datenpunkte aus einer Reihe entfernt oder Datenpunkte basierend auf einem Satz von Filterkriterien als leer gekennzeichnet. Beachten Sie bei der Arbeit mit Daten, dass eine Filteroperation die Daten der ursprünglichen Reihe ändern oder die Ausgabe in einer Ausgabereihe speichern kann.

Warnung

Stellen Sie beim Filtern mehrerer Reihen sicher, dass alle Reihen ausgerichtet sind.Andernfalls löst die Filtermethode eine Ausnahme aus.Weitere Informationen finden Sie unter Ausrichten von Daten.

Filtern von Daten

Für die Filterung werden die folgenden Eigenschaften und Methoden in der DataManipulator-Klasse verwendet:

  • FilterSetEmptyPoints-Eigenschaft
    Gibt an, ob Datenpunkte aus der Reihe entfernt werden sollen oder sie als leere Punkte gekennzeichnet werden sollen.

  • FilterMatchedPoints-Eigenschaft
    Gibt an, ob mit den Kriterien übereinstimmende Datenpunkte entfernt werden sollen. Wenn Sie diese Eigenschaft auf false festlegen, werden Punkte gefiltert, die nicht mit den Filterkriterien übereinstimmen.

    Diese Eigenschaft wird nur auf die Filter-Methode angewendet.

  • Filter-Methode
    Filtert die Datenpunkte einer Reihe unter Verwendung eines Datumsbereichs oder Zeitraums, eines Vergleichs von einem Datenpunktwert mit einem Zahlenwert oder eines anderen benutzerdefinierten Kriteriums.

  • FilterTopN-Methode
    Filtert die Datenpunkte einer Reihe mit Ausnahme der größten oder kleinsten Werte in der Reihe.

Filtern nach Datumsbereich oder Zeitraum

Verwenden Sie die Filter-Methode, wenn die X-Werte der Datenpunkte Datumsangaben sind (die Series.XValueType-Eigenschaft der Reihe auf DateTime festgelegt ist) und Sie nach die Daten nach Datumsbereichen oder Zeiträumen filtern möchten. Die Reihendaten werden in Bereiche unterteilt, und die definierten Elemente des Bereichs werden gefiltert. Um einen Datumsbereich zu definieren, geben Sie zwei Parameter an:

  • Einen Bereichstyp in der DateRangeType-Klasse.

  • Eine Zeichenfolge von Bereichselementen. Diese Zeichenfolge kann Kommas und Bindestriche enthalten. Beispiel: "1-10, 20, 25".

Im folgenden Code werden alle Wochenenddatenpunkte aus einer Reihe mit dem Namen "MySeries" gefiltert und anschließend alle Datenpunkte außer dem ersten Tag des Monats entfernt.

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

Filtern aller Daten außer Extremen

Verwenden Sie die FilterTopN-Methode, um alle Punkte mit Ausnahme einer festgelegten Anzahl von Punkten mit den höchsten und niedrigsten Punktwerten aus einer Reihe zu filtern. Geben Sie für diese Methode die folgenden Kriterien an:

  • Gesamtzahl der Punkte, die beibehalten werden sollen.

  • Zu filternde Y-Werte. Beispiel: "Y2". Der Standardwert ist der erste Y-Wert ("Y").

  • Ob die höchsten Werte abgerufen werden sollen. Wenn FilterTopN auf False festgelegt wird, werden die niedrigsten Werte beibehalten. Der Standardwert ist True.

Im folgenden Code wird die Verwendung der FilterTopN-Methode veranschaulicht.

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

Filtern nach Werten

Verwenden Sie die Filter-Methode, um nach Wertvergleich zu filtern. Geben Sie die folgenden Parameter an:

  • Eine Vergleichsmethode in der CompareMethod-Klasse.

  • Ein konstanter Wert für den Vergleich.

  • Zu filternde Y-Werte. Beispiel: "Y2". Der Standardwert ist der erste Y-Wert ("Y").

Im folgenden Code wird veranschaulicht, wie Sie Punkte durch einen Vergleich mit einer Konstanten filtern.

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

Filtern nach benutzerdefinierten Kriterien

Verwenden Sie die IDataPointFilter-Schnittstelle, um benutzerdefinierte Kriterien zu definieren. Diese Schnittstelle macht die FilterDataPoint-Methode verfügbar, die die zu entfernenden Datenpunkte bestimmt. Im Folgenden werden die Parameter der FilterDataPoint-Methode und die zugehörigen Rückgabewerte aufgeführt:

  • Das zu filternde Datenpunktobjekt.

  • Die Reihe, zu der der Punkt gehört.

  • Der Index des Datenpunkts im Series.Points-Auflistungsobjekt.

  • Gibt True zurück, wenn der Punkt gefiltert werden soll. Andernfalls wird False zurückgegeben.

Im folgenden Code wird veranschaulicht, wie Sie Punkte nach benutzerdefinierten Kriterien filtern.

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

Filtern mehrerer Reihen

Geben Sie eine durch Trennzeichen getrennte Liste der Reihennamen in einer Eingabereihenzeichenfolge an, um mehrere Reihen zu filtern. Alle Punkte in allen Reihen werden basierend auf der ersten Reihe in der Liste gefiltert. Anders ausgedrückt werden Datenpunkte mit dem gleichen Index aus allen Reihen entfernt, wenn der Datenpunkt mit diesem Index aus der ersten Reihe entfernt wird.

Siehe auch

Referenz

System.Windows.Forms.DataVisualization.Charting

System.Web.UI.DataVisualization.Charting

Weitere Ressourcen

Datenbindung und -bearbeitung