none
Crear gráficos a partir de tablas RRS feed

  • Pregunta

  •  La pregunta principal: ¿Es posible crear graficos en VS 2013 Express para WindowsStore?

     He leido en msdn que se puede para aplicaciones WindowsForm con la clase Chart( msdn.microsoft.com/es-us/library/dd456753.aspx ) pero no he encontrado nada para esta versión. Si alguien conoce algún metodo y me puede dejar algún enlace para aprender se agradece enormemente.

     Gracias!

    jueves, 1 de mayo de 2014 23:02

Respuestas

  • Tienes que implementarte tu propio control para generar charts o bien usar alguno de los ya existentes. 

    Por ejemplo, aqui tienes algunos:

    • http://modernuitoolkit.codeplex.com/ (Gratis)
    • http://winrtxamltoolkit.codeplex.com/ (Gratis)
    • http://www.syncfusion.com/products/winrt (De pago)
    • http://www.telerik.com/windows-8/chart-xaml (De pago)
    • Marcado como respuesta North King sábado, 3 de mayo de 2014 22:10
    viernes, 2 de mayo de 2014 12:31

Todas las respuestas

  • SI SOLUCIONO TU PROBLEMA RECUERDA MARCAR COMO RESPUESTA y VOTAR COMO UTIL

    Fijate en este ejemplo armo el grafico con valores que tengo en un DATAGRIDVIEW ...en tu caso las variables que le pasas deberan ser lo que te devueva la query de la base de datos y el truco esta en esta linea

    Chart1.Series(0).Points.AddXY(ESTO ES EL TEXTO DE TU LEYENDA ,  VARIABLE NUMERICA);

     
    private void ValoresGrafo()
    {
    	this.adm = ValorBuyerid(0, 6);
    	this.cmt = ValorBuyerid(1, 6);
    	this.ctu = ValorBuyerid(2, 6);
    	this.wal = ValorBuyerid(3, 6);
    	this.wtu = ValorBuyerid(4, 6);
    	Chart1.Series(0).Points.AddXY("ADM " + " " + this.adm.ToString("N2") + " % ", this.adm);
    	Chart1.Series(0).Points.AddXY("CMT " + " " + this.cmt.ToString("N2") + " % ", this.cmt);
    	Chart1.Series(0).Points.AddXY("CTU " + " " + this.ctu.ToString("N2") + " % ", this.ctu);
    	Chart1.Series(0).Points.AddXY("WAL " + " " + this.wal.ToString("N2") + " % ", this.wal);
    	Chart1.Series(0).Points.AddXY("WTU " + " " + this.wtu.ToString("N2") + " % ", this.wtu);
    
    	Label1.Text = "RESUMEN GLOBAL DE COMPRAS SEGUN  PROCESOS" + " ";
    	Label2.Text = "Lapso : " + fecha1.ToShortDateString + " al " + fecha2.ToShortDateString;
    }
    
    public double ValorBuyerid(int f, int c)
    {
    	double valor = null;
    	if (!Information.IsDBNull(this.DataGridView1.Rows(f).Cells(c).Value) && !string.IsNullOrEmpty(this.DataGridView1.Rows(f).Cells(c).Value)) {
    		valor = Convert.ToDouble(this.DataGridView1.Rows(f).Cells(c).Value);
    		if (valor == -1) {
    			valor = 0;
    		}
    	} else {
    		valor = 0;
    	}
    	return valor;
    }



    EFRAIN MEJIAS C VALENCIA - VENEZUELA



    viernes, 2 de mayo de 2014 1:22
  • Vaya, perdona, mira que siempre lo menciono, pero esta vez se me olvido especificar que trabajo con c#.

    No sé en Visual Basic si aparece la clase Chart, pero no en c#.

    Otra cosa mas, eso de la query de la base de datos no lo entiendo muy bien, tengo muy poco nivel... yo lo unico que tengo son dos vectores double[] con los que quiero marcar puntos, coordenadas X,Y para representar rectas entre ellos.

    De todas maneras gracias por contestar, si me pudieras ayudar con c# estaría encantado de votar y marcar.

    viernes, 2 de mayo de 2014 8:33
  • SI SOLUCIONO TU PROBLEMA RECUERDA MARCAR COMO RESPUESTA y VOTAR COMO UTIL

    Fijate en este ejemplo armo el grafico con valores que tengo en un DATAGRIDVIEW ...en tu caso las variables que le pasas deberan ser lo que te devueva la query de la base de datos y el truco esta en esta linea

    Chart1.Series(0).Points.AddXY(ESTO ES EL TEXTO DE TU LEYENDA ,  VARIABLE NUMERICA);

    private void ValoresGrafo()
    {
    	this.adm = ValorBuyerid(0, 6);
    	this.cmt = ValorBuyerid(1, 6);
    	this.ctu = ValorBuyerid(2, 6);
    	this.wal = ValorBuyerid(3, 6);
    	this.wtu = ValorBuyerid(4, 6);
    	Chart1.Series(0).Points.AddXY("ADM " + " " + this.adm.ToString("N2") + " % ", this.adm);
    	Chart1.Series(0).Points.AddXY("CMT " + " " + this.cmt.ToString("N2") + " % ", this.cmt);
    	Chart1.Series(0).Points.AddXY("CTU " + " " + this.ctu.ToString("N2") + " % ", this.ctu);
    	Chart1.Series(0).Points.AddXY("WAL " + " " + this.wal.ToString("N2") + " % ", this.wal);
    	Chart1.Series(0).Points.AddXY("WTU " + " " + this.wtu.ToString("N2") + " % ", this.wtu);
    
    	Label1.Text = "RESUMEN GLOBAL DE COMPRAS SEGUN  PROCESOS" + " ";
    	Label2.Text = "Lapso : " + fecha1.ToShortDateString + " al " + fecha2.ToShortDateString;
    }
    
    public double ValorBuyerid(int f, int c)
    {
    	double valor = null;
    	if (!Information.IsDBNull(this.DataGridView1.Rows(f).Cells(c).Value) && !string.IsNullOrEmpty(this.DataGridView1.Rows(f).Cells(c).Value)) {
    		valor = Convert.ToDouble(this.DataGridView1.Rows(f).Cells(c).Value);
    		if (valor == -1) {
    			valor = 0;
    		}
    	} else {
    		valor = 0;
    	}
    	return valor;
    }


    EFRAIN MEJIAS C VALENCIA - VENEZUELA

    viernes, 2 de mayo de 2014 10:57
  • De esta forma puedes seleccionar valores desde tu base de datos y luego los pasa a tu grafico

    private void ExisteOC(string ID) { double valor1 = 0; double valor2 = 0; double valor3 = 0; string SQL = "SELECT campo1 ,campo2,campo3 FROM TUTABLA WHERE ID= @ID"; SqlCommand comando = new SqlCommand(SQL, "Cadena de Conexion"); try { SqlDataReader lector = default(SqlDataReader); comando.Connection.Open(); comando.Parameters.Clear(); comando.Parameters.AddWithValue("@ID", ID); lector = comando.ExecuteReader(); if ((lector.Read())) { valor1 = lector("campo1").ToString(); valor2 = lector("campo2").ToString(); valor3 = lector("campo3").ToString(); } lector.Close(); comando.Connection.Close(); ValoresGrafo(valor1,valor2,valor3); } catch (Exception ex) { comando.Connection.Close(); MessageBox.Show("Error" + ex.ToString()); } }

     private void ValoresGrafo(Byval valor1 As Double ,Byval valor2 As Double,Byval valor3 As Double)
    {
        
        Chart1.Series(0).Points.AddXY("TEXTO A MOSTRAR EN LEYENDA", valor1);
        Chart1.Series(0).Points.AddXY("TEXTO A MOSTRAR EN LEYENDA", valor2);
        Chart1.Series(0).Points.AddXY("TEXTO A MOSTRAR EN LEYENDA", valor3);
        

        }




    EFRAIN MEJIAS C VALENCIA - VENEZUELA






    viernes, 2 de mayo de 2014 11:15
  • Tienes que implementarte tu propio control para generar charts o bien usar alguno de los ya existentes. 

    Por ejemplo, aqui tienes algunos:

    • http://modernuitoolkit.codeplex.com/ (Gratis)
    • http://winrtxamltoolkit.codeplex.com/ (Gratis)
    • http://www.syncfusion.com/products/winrt (De pago)
    • http://www.telerik.com/windows-8/chart-xaml (De pago)
    • Marcado como respuesta North King sábado, 3 de mayo de 2014 22:10
    viernes, 2 de mayo de 2014 12:31
  • Talvez esto funcione en WindowsForm pero en la version Express para WindowsStore no existen los espacio de nombre necesarios:

    ni System.Web.UI.DataVisualization.Charting

    ni System.Windows.Forms.DataVisualization.Charting

    Talvez tenga que descargar alguna libreria y añadir la referencia?? En tal caso, no la he encontrado.

    De nuevo, gracias por contestar.

    viernes, 2 de mayo de 2014 13:43
  •  Muchas gracias, es justo lo que necesito, espero.. porque esto es un mundo nuevo para mi y creo que me va llevar mucho trabajo comprender como funciona. Me descargue el winrtxamltoolkit, ví el video y me ilusiono mucho ver la cantidad de posibilidades que abría.

    (edit)

    Para aprender a utilizar la clase Chart de esta libreria este tutorial me resulto excelente:

    http://eren.ws/2013/10/15/using-graphs-and-charts-in-windows-store-apps-boredom-challenge-day-11/

    • Editado North King martes, 6 de mayo de 2014 16:46
    sábado, 3 de mayo de 2014 22:31