none
ayuuda con el control chart RRS feed

  • Debate general

  • Hola a todos! Necesito que alguien tenga la amabilidad de explicarme como relacionar el datasource que apunta a un data set, con las series y los ejes X e Y
    martes, 6 de noviembre de 2012 13:00

Todas las respuestas

  • Hola, es sencillo. Algo como esto:

    Chart1.DataSource = BindingSource1 Chart1.Series(0).Color = Color.BlueViolet Chart1.Series(0).Name = "Dato 1" 'associate series with column names Chart1.Series(0).XValueMember = Dtable.Columns(1).ToString Chart1.Series(0).YValueMembers = Dtable.Columns(2).ToString Chart1.DataBind() Chart1.Visible = True



    Saludos, Javier J

    martes, 6 de noviembre de 2012 13:31
  • Gracias Javier J por responder. Tengo que realizar un grafico en el que muestre en el eje 'Y' la cantidad Categorias. Y en el eje 'X' el año. En el grafico hay tantas Series como Categorias (con su respectiva cantidad y año) .La consulta sql que despues la adapto al data set es la siguiente:

    SELECT count(*) as cantidad, categoria as cortetransito ,  extract(year from "fechaHora") as cortetiempo FROM "Transitos"  WHERE    "fechaHora" >= '01/01/2011 00:00:00' AND "fechaHora" <= '11/06/2012 23:59:59' AND  "Transitos"."categoria" in (  '01' ,  '02'  )  AND  "Transitos"."numeroVia" in (  '1', '2' )  GROUP BY categoria ,  extract(year from "fechaHora")  order by categoria

    Luego hago la parte de las Series (QUE ESTA MAL)

    'graph.Series("Series1").XValueMember = "cortetransito"
                    graph.Series("Series1").XValueMember = "cantidad"
                    graph.Series("Series1").YValueMembers = "cortetiempo"
                    graph.DataSource = ds.Tables("Transitos")
                    graph.DataBind()

    ¿Que me recomendarias que haga?

    Gracias de antemano!


    • Editado Axel.st martes, 6 de noviembre de 2012 18:32
    martes, 6 de noviembre de 2012 18:32
  • Tendrías que crear una Serie por cada categoría.

    Yo haría primero un "Select Distinct Categoria From Transitos Where ...." para recorrer todas las categorías e ir creando para cada una de ellas una serie.

    Aquí tienes un ejemplo:

    http://stackoverflow.com/questions/10563428/loop-to-create-multiple-series-in-chart-control


    Saludos, Javier J

    miércoles, 7 de noviembre de 2012 8:29
  • Hola Javier, gracias por responder. Ya hize lo que me recomendaste pero ahora surgio otro problema.

    Esto es lo que sucede con el grafico:

    Este es el codigo en donde relleno el dataset ("ds") con los datos que me devuelve la consulta "sqlfinal":

    graph.Series.Clear()

                    For i = 0 To nombrecat.Length - 1
                        graph.Series.Add(nombrecat(i))
                        Me.categoriasParam.Clear()
                        addCategoriaParam(idcat(i))
                        sqlBody = Trim(Me.armarQuery)

                        sqlFinal = sqlSelect & Mid(sqlBody, 1, Len(sqlBody) - 3) & sqlGroupBy & nombreToOrder
                        cmd.CommandText = sqlFinal
                        reader = cmd.ExecuteReader()
                        If Not reader.HasRows() And Me.tipoCorteTemporal <> ONLINE Then 'No se encontarron datos
                            reader.Close()
                            actualizarGrafico = 0
                            Exit Function
                        End If
                        If reader.Read() Then
                            Dim cantidad As Integer
                            cantidad = reader!cantidad
                            Dim anio As Integer
                            anio = reader!cortetiempo
                            reader.Close()
                            Dim da As New NpgsqlDataAdapter(sqlFinal, cmd.Connection)
                            da.Fill(ds, "Transitos")
                            graph.Series(nombrecat(i)).XValueMember = "cortetiempo"
                            graph.Series(nombrecat(i)).YValueMembers = "cantidad"
                            graph.DataSource = ds.Tables("Transitos")
                        End If
                    Next

    La consulta (sqlfinal)  trae solo los datos de una Categoria, es decir, de una Serie. Porque para cada Serie necesita su correspondiente "año" ("cortetiempo") y "cantidad" ("cantidad")

    Espero una respuesta!

    Gracias de antemano!


    • Editado Axel.st miércoles, 7 de noviembre de 2012 15:21
    miércoles, 7 de noviembre de 2012 15:18
  • No está bien.

    1º Crear las series de la gráfica

    SELECTdistinct categoria FROM "Transitos"  WHERE    "fechaHora" >= '01/01/2011 00:00:00' AND "fechaHora" <= '11/06/2012 23:59:59' AND  "Transitos"."categoria" in (  '01' ,  '02'  )  AND  "Transitos"."numeroVia" in (  '1', '2' ) 

    Recorres esos registros y para cada uno (para cada catagoría) haces esto:

    Dim ChartArea1 As ChartArea = New ChartArea()
    Dim Legend1 As Legend = New Legend()
    Dim Series1 As Series = New Series()
    ChartArea1.Name = "ChartArea1"
    Chart1.ChartAreas.Add(ChartArea1)
    Legend1.Name = "Categoría xxxx"
    Chart1.Legends.Add(Legend1)
    Chart1.Location = New System.Drawing.Point(13, 100)
    Chart1.Name = "Chart1"
    Series1.ChartArea = "ChartArea1"
    Series1.Legend = "Legend1"
    Series1.Name = "Series1"
    Chart1.Series.Add(Series1)
    Chart1.Size = New System.Drawing.Size(1200, 400)
    Chart1.TabIndex = 0
    Chart1.Text = "Gráfica de ..."
    Chart1.Series("Series1").XValueMember = "cortetiempo"
    Chart1.Series("Series1").YValueMembers = "cantidad"
    Chart1.Series("Series1").IsValueShownAsLabel = True 'Muestra el dato de y
    Luego asignas el origen de datos con

    Chart1.DataSource = ds.Tables("Transitos")


    Saludos, Javier J

    miércoles, 7 de noviembre de 2012 17:10
  • Hola Javier, gracias por responder. Todavia tengo algunas dudas sobre tu respuesta.

    Cada Categoria es una Serie del Chart. Lo que hago es para cada Categoria realizo una consulta para que me traiga la "cantidad" y el "año" correspondiente a la Categoria. 

    Si eso esta MAL, entonces que es lo que tengo que hacer para que la consulta me traiga la informacion que necesito para cada Categoria y luego relacionar las Series con el dataset rellenado por la consulta??

    Si me podrias dar un ejemplo de un Chart que utilice varias Series te lo agradeceria.

    Gracias de antemano!

     
    • Editado Axel.st miércoles, 7 de noviembre de 2012 18:46
    miércoles, 7 de noviembre de 2012 18:02
  • Ya lo resolvi. Agregue a cada serie la propiedad .Points.AddXY("el valor de X'', ''el valor de Y").
    jueves, 8 de noviembre de 2012 12:16
  • Hola a todos!, necesito saber como agregar una etiqueta o descripcion en cada Eje.

    Gracias de antemano!!

    jueves, 8 de noviembre de 2012 14:47
  • Ya lo resolvi asi. chart1.ChartAreas("ChartArea1").AxisX/Y.Title=titulo
    jueves, 8 de noviembre de 2012 14:58