Поделиться через


Фильтрация данных

В ходе фильтрации точки данных удаляются из ряда или помечаются как пустые на основании набора условий фильтрации.Во время работы с данными учитывайте, что операция фильтрации может изменить исходные данные ряда или сохранить выходные данные в выходной ряд.

ПредупреждениеВнимание!

Во время фильтрации нескольких наборов убедитесь, что все ряды выровнены.В противном случае метод фильтрации создает исключение.Дополнительные сведения см. в разделе Выравнивание данных.

Фильтрация данных

Для фильтрации используются следующие свойства и методы класса DataManipulator.

  • Свойство FilterSetEmptyPoints
    Указывает, удаляются ли точки данных из ряда или помечаются как пустые.

  • Свойство FilterMatchedPoints
    Указывает, удаляются ли точки данных, удовлетворяющие условию.Если задано значение false, то фильтруются точки, которые не удовлетворяют условию фильтрации.

    Это свойство применяется только к методу Filter.

  • Метод Filter
    Фильтрует точки данных ряда по диапазону даты или времени, путем сравнения точки данных с числовым значением или по другим определяемым пользователем критериям.

  • Метод FilterTopN
    Фильтрует точки данных ряда, за исключением точек с самыми большими или самыми маленькими значениями в ряду.

Фильтрация по диапазонам даты или времени

Метод Filter используется для фильтрации по диапазонам даты или времени, когда значения X точек данных представляют даты (свойство Series.XValueType ряда имеет значение DateTime).Данные ряда разбиваются на диапазоны, в которых фильтруются определенные элементы.Чтобы определить диапазон дат, укажите два параметра.

  • Тип диапазона в классе DateRangeType.

  • Строка с элементами диапазона.В строку могут входить запятые и дефисы,например «1-10, 20, 25».

В следующем коде выполняется фильтрация всех точек, соответствующих выходным дням, из ряда с именем MySeries, а затем удаляются все точки данных, кроме первой точки в месяце.

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

Фильтрация всех данных, кроме крайних значений

Чтобы отфильтровать из ряда все точки, кроме указанного числа точек с самыми большими или самыми маленькими значениями, используйте метод FilterTopN.Для использования этого метода укажите следующие условия.

  • Общее количество сохраняемых точек.

  • Значения Y для фильтрации.Например, «Y2».По умолчанию используется первое значение Y («Y»).

  • Логическое значение, определяющее, сохраняются ли максимальные значения.Если установлено значение False, метод FilterTopN сохраняет самые маленькие значения.Значение по умолчанию — True.

В следующем примере кода показано использование метода 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); 

Фильтрация по значениям

Для фильтрации путем сравнения значений используйте метод Filter.Укажите следующие параметры.

  • Метод сравнения в классе CompareMethod.

  • Постоянное значение для сравнения.

  • Значения Y для фильтрации.Например, «Y2».По умолчанию используется первое значение Y («Y»).

В следующем коде показано, как фильтровать точки данных путем сравнения с константой.

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

Фильтрация по пользовательским критериям

Для определения пользовательских критериев используется интерфейс IDataPointFilter.Этот интерфейс предоставляет доступ к методу FilterDataPoint, который определяет точки данных для удаления.Далее перечислены параметры метода FilterDataPoint и возвращаемое им значение.

  • Объект точки данных для фильтрации.

  • Ряд, которому принадлежит точка.

  • Индекс точки данных в объекте коллекции Series.Points.

  • Если точку следует фильтровать, возвращается значение True. В противном случае возвращается значение False.

В следующем коде показано, как фильтровать точки по определяемым пользователем критериям.

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

Фильтрация нескольких рядов

Чтобы отфильтровать несколько рядов, укажите в строке входных рядов список рядов с разделителями-запятыми.Все точки в каждом ряду будут фильтроваться в зависимости от первого ряда в списке.Это значит, что точки данных с одинаковым индексом удаляются из всех рядов, если точка данных с этим индексом удаляется из первого ряда.

См. также

Справочник

System.Windows.Forms.DataVisualization.Charting

System.Web.UI.DataVisualization.Charting

Другие ресурсы

Привязка и обработка данных