共用方式為


篩選資料 (Chart 控制項)

資料篩選根據一組篩選準則,移除篩選數列中的資料點或將資料點標示為空白。當您處理資料時,請記住,篩選作業可能會修改原始數列資料或將輸出儲存至輸出數列。

提示

篩選多個數列時,確定所有數列都已對齊。否則,篩選方法會擲回例外狀況。如需詳細資訊,請參閱對齊資料

篩選資料

下列是 DataManipulator 類別中用於篩選的屬性和方法:

  • FilterSetEmptyPoints 屬性
    指定要將資料點從數列移除還是將其標示為空點。

  • FilterMatchedPoints 屬性
    指定是否要移除符合準則的資料點。如果設為 false,則會篩選不符合篩選準則的資料點。

    這個屬性只適用於 Filter 方法。

  • Filter 方法
    使用日期或時間範圍、將資料點值與數值做比較,或某個自訂使用者定義準則,來篩選數列的資料點。

  • FilterTopN 方法
    篩選數列的所有資料點,但數列中具有最大或最小值的資料點除外。

依日期或時間範圍篩選

當資料點的 X 值為日期 (數列的 Series.XValueType 屬性設為 DateTime) 時,使用 Filter 方法,依日期或時間範圍進行篩選。數列資料會在定義的範圍項目經過篩選之處分割為多個範圍。若要定義日期範圍,請指定兩個參數:

  • 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

其他資源

資料繫結和操作