Filtrar datos en controles Chart
El filtrado de datos quita los puntos de datos de una serie o los marca como vacíos en función de un conjunto de criterios de filtrado.Cuando trabaje con sus datos, tenga en cuenta que una operación de filtrado puede modificar los datos de la serie original o almacenar el resultado en una serie de resultados.
Advertencia
Cuando filtre varias series, asegúrese de que estén alineadas todas ellas.De lo contrario, el método de filtrado produce una excepción.Para obtener más información, vea Alinear datos.
Filtrar datos
Las propiedades y los métodos siguientes de la clase DataManipulator se usan para el filtrado:
Propiedad FilterSetEmptyPoints
Especifica si se quitan los puntos de datos de la serie o se marcan como puntos vacíos.Propiedad FilterMatchedPoints
Especifica si se quitan los puntos de datos que coinciden con los criterios.Si se establece en false, se filtran los puntos que no coinciden con los criterios de filtrado.Esta propiedad solo se aplica al método Filter.
Método Filter
Filtra los puntos de datos de una serie mediante un intervalo de fechas o tiempo, una comparación del valor de un punto de datos con un valor numérico o algunos criterios personalizados definidos por el usuario.Método FilterTopN
Filtra los puntos de datos de una serie excepto los que tienen los valores más alto o más bajo de la serie.
Filtrar por intervalo de fecha o tiempo
Use el método Filter para filtrar por los intervalos de fecha o tiempo cuando los valores X de los puntos de datos sean fechas (la propiedad Series.XValueType de la serie se establece en DateTime).Los datos de la serie se dividen en intervalos en los que se filtran los elementos definidos del rango.Para definir un intervalo de fechas, especifique dos parámetros:
Tipo de intervalo de la clase DateRangeType.
Cadena con los elementos del intervalo.Esta cadena puede incluir comas y guiones.Por ejemplo, "1-10, 20, 25".
El siguiente código filtra todos los puntos de datos del fin de semana a partir de una serie denominada "MySeries" y, a continuación, quita todos los puntos de datos salvo el primero del mes.
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");
Filtrar todos los datos excepto los extremos
Use el método FilterTopN para filtrar todos los puntos de una serie excepto un número especificado de puntos con los valores de punto mayor o menor.Para usar este método, especifique los siguientes criterios:
Número de puntos totales que se van a conservar.
Valores Y que se van a filtrar.Por ejemplo, "Y2".El valor predeterminado es el primer valor Y ("Y").
Si se obtienen los valores superiores o no.Si se establece en False, FilterTopN conserva los valores menores.El valor predeterminado es True.
En el siguiente código se muestra cómo usar el método 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);
Filtrar por valores
Use el método Filter para filtrar por comparación de valores.Especifique los parámetros siguientes:
Método de comparación de la clase CompareMethod.
Valor constante para la comparación.
Valores Y que se van a filtrar.Por ejemplo, "Y2".El valor predeterminado es el primer valor Y ("Y").
En el siguiente código se muestra cómo filtrar puntos comparándolos con una 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");
Filtrar con criterios personalizados
Use la interfaz IDataPointFilter para definir criterios personalizados.Esta interfaz expone el método FilterDataPoint, que determina los puntos de datos que se van a quitar.A continuación se citan los parámetros del método FilterDataPoint y su valor devuelto:
Objeto del punto de datos que se va a filtrar.
Serie a la que pertenece el punto.
Índice del punto de datos del objeto de colección Series.Points.
Devuelve True si el punto se debe filtrar; de lo contrario, devuelve False.
En el siguiente código se muestra cómo filtrar puntos con criterios definidos por el usuario.
' 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;
}
}
}
Filtrar varias series
Filtre varias series especificando una lista de nombres de series separados por comas en una cadena de serie de entrada.Todos los puntos de cada serie se filtrarán basándose en la primera serie de la lista.Es decir, los puntos de datos con el mismo índice se quitan de todas las series si se quita el punto de datos con el punto de datos con ese índice de la primera serie.
Vea también
Referencia
System.Windows.Forms.DataVisualization.Charting
System.Web.UI.DataVisualization.Charting