¿Cómo poner dos Series con diferente tipo de gráfica dentro de un control chart?

publicado por: Anonymous

Necesito crear una gráfica de Columnas y en ella mostrar una línea roja que muestre un límite que el usuario puede cambiar.

        grafica.Titles.Add("Animales");
        grafica.Palette = ChartColorPalette.EarthTones;
        grafica.DataBindTable(db.getMascotas(), "Mascota");
        grafica.DataBind();
        grafica.Series[0].ChartType = SeriesChartType.Bar;

        int[] pointsArray = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
        grafica.Series.Add("Limite");
        grafica.Series["Limite"].ChartType = SeriesChartType.Line;
        grafica.Series["Limite"].Points.AddXY(5, pointsArray);

introducir la descripción de la imagen aquí

solución

Lo ideal asumiendo tu pregunta anterior seria que si te decidiste a usar la clase intermedia generes una propiedad dentro de la clase llamada limite, si el limite viene de tu base de datos ligalo a esa propiedad de lo contrario fijalo manualmente si es una constante:

public List<GraficaMascotas> mLinq()
        {
            var Mascotas = from tMAscota in ListaM
                           select new GraficaMascotas()
                {
                    Mascota = tMAscota.tMascota,
                    Cantidad = tMAscota.Cantidad,
                    Limite = 75 //Aqui fija el limite por codigo o al campo de la consulta o a una variable
                };
            return Mascotas.ToList();
        }

Ahora en la parte del grafico usamos el tipo Column en la serie principal ya que es incompatible con el tipo Line solamente:

chart1.Series[0].ChartType = SeriesChartType.Column; //Usamos tipo column ya que bar es incompatible con line
chart1.Series[0].Color = Color.Aqua;
chart1.Series[1].ChartType = SeriesChartType.Line;
chart1.Series[1].Color = Color.Red;
this.chart1.DataBind();

Y tendremos un resultado como:

Resultado del chart

Actualizacion en base al comentario del OP

Si la linea de limite no va por registro y es unica a cada configuración de la grafica, solamente requieres usar una StripLine y agregarla a la grafica para indicar el limite:

StripLine linea = new StripLine
        {
            Interval = 0,
            IntervalOffset = 60, //Aqui va el limite del valor Y
            StripWidth = 1,
            BackColor = Color.Orange
        };
chart1.ChartAreas[0].AxisY.StripLines.Add(linea);

La propiedad que buscas para determinar el punto Y del grafico es: IntervalOffset donde la igualarias a la configuracion de tu grafica para generar la linea horizontal

y obtienes un resultado como :

Grafico con linea de limite

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *