26/10/2008 22:28 El Bruno

[NET] DataVisualization.Charting.Chart: Controles para crear gráficos en .Net

Buenas,

si alguna vez has tenido que agregar capacidades para crear gráficos en alguna aplicación, seguramente habrás optado por pasarle el marrón a otra persona tenido que sufrir a MSChart. Por lo general, una de las opciones más comunes era comprar una biblioteca de clases de otras empresas, o agregar la clásica y popular funcionalidad de exportar a Excel;desde donde nuestros queridos y expertos usuarios podrán crear los gráficos que necesiten.

Desde hace un tiempo existe una biblioteca de clases para .Net que nos pueden ayudar en este tipo de escenarios: Microsoft Chart Controls. Estos links nos pueden ayudar a comenzar a utilizarla:

 

Como por lo general me gusta probar un poco algo antes de postearlo, me cree una pequeña aplicación con un Chart en un formulario; he aquí mis apuntes.

1. En primer lugar, he agregado un control del tipo DataVisualization.Charting.Chart, al formulario principal de la aplicación.

2. como no tengo ganas de agregar datos a mano, he creado la siguiente función que crea una serie con 5 datos en forma aleatoria.

1 ''' <summary> 2 ''' Gets the random series. 3 ''' </summary> 4 ''' <param name="name">The name.</param> 5 ''' <returns></returns> 6 Public Function GetRandomSeries(ByVal name As String) As Series 7 Dim returnSeries As New Series(name) 8 Dim rnd As New Random() 9 For index As Integer = 1 To 5 10 returnSeries.Points.Add(rnd.Next(0, 100)) 11 Next 12 Return returnSeries 13 End Function

2. A continuación, para crear un gráfico simple de barras con 2 series, en el evento Load() del form, agrego las siguientes líneas

1 ' crear y agregar el chart area 2 Dim chartArea1 As New ChartArea("ChartArea1") 3 chartViewer.ChartAreas.Add(chartArea1) 4 ' añadir datos 5 chartViewer.Series.Add(GetRandomSeries("serie 1")) 6 chartViewer.Series.Add(GetRandomSeries("serie 2"))

y podemos ver un gráfico como el de la siguiente imagen.

 

3. Si agrego 2 series más de datos, con el siguiente código

1 ' crear y agregar el chart area 2 Dim chartArea1 As New ChartArea("ChartArea1") 3 chartViewer.ChartAreas.Add(chartArea1) 4 ' añdir datos 5 chartViewer.Series.Add(GetRandomSeries("serie 1")) 6 chartViewer.Series.Add(GetRandomSeries("serie 2")) 7 chartViewer.Series.Add(GetRandomSeries("serie 3")) 8 chartViewer.Series.Add(GetRandomSeries("serie 4"))

el gráfico muestra un nuevo set de datos

4. Si por ejemplo, deseo organizar las series de datos en 2 áreas separadas, y agregar un titulo con formato al Chart, el siguiente código lo hace posible

1 ' crear y agregar el chart area 2 Dim chartArea1 As New ChartArea("ChartArea1") 3 Dim chartArea2 As New ChartArea("ChartArea2") 4 chartViewer.ChartAreas.Add(chartArea1) 5 chartViewer.ChartAreas.Add(chartArea2) 6 7 ' añadir datos 8 chartViewer.Series.Add(GetRandomSeries("serie 1")) 9 chartViewer.Series.Add(GetRandomSeries("serie 2")) 10 chartViewer.Series.Add(GetRandomSeries("serie 3")) 11 chartViewer.Series.Add(GetRandomSeries("serie 4")) 12 13 chartViewer.Series(0).ChartArea = "ChartArea1" 14 chartViewer.Series(1).ChartArea = "ChartArea1" 15 chartViewer.Series(2).ChartArea = "ChartArea2" 16 chartViewer.Series(3).ChartArea = "ChartArea2" 17 18 ' apariencia del char 19 Dim titleChart As Title = chartViewer.Titles.Add("Titulo del chart") 20 titleChart.ForeColor = Color.Blue 21 titleChart.Font = New Font(titleChart.Font, FontStyle.Bold) 22 titleChart.TextStyle = TextStyle.Shadow

y el gráfico se divide en "2 gráficos" con un título en la sección superior.

5. Finalmente si quiero mostrar una de las secciones del Chart, en barras 3D, debo modificar una de las ChartArea

1 ' 3D charts 2 chartArea1.Area3DStyle.Enable3D = True 3 chartArea2.Area3DStyle.Enable3D = False

y el gráfico queda como en la siguiente imagen.

 

En pocos pasos he creado un gráfico que se adapta a lo que estaba necesitando por estos días. Pero además de tener capacidades para graficar en aplicaciones Windows, las librerías también son para ASP.Net, con lo que realmente conviene echarles un vistazo, en el caso de que tengamos que crear Chart.

Descarga el ejemplo:

 http://cid-bef06dffdb192125.skydrive.live.com/self.aspx/Code%20Samples/2008%2010%2027%20-%20DemoChart.zip

 

Saludos @ Home

El Bruno

Crossposting from ElBruno.com
Archivado en:
Comparte este post:

# re: [NET] DataVisualization.Charting.Chart: Controles para crear gráficos en .Net

Monday, October 27, 2008 1:50 AM by Leonardo

Hola señor Bruno, se ve muy amigable los graficos, de casualidad se pueden descargar las presentaciones??, spero que se pueda.. :/

# re: [NET] DataVisualization.Charting.Chart: Controles para crear gráficos en .Net

Monday, October 27, 2008 8:49 AM by lonifasiko

Bruno, te recomiendo echar un vistazo a NPLot:

netcontrols.org/.../wiki

Es una potentísima librería opensource para crear gráficos en .NET. Parece que últimamente no han actualizados versiones y demás, pero te aseguro que da mucho juego, tanto para Winforms como ASP.NET.

SaludoX.

# re: [NET] DataVisualization.Charting.Chart: Controles para crear gráficos en .Net

Monday, October 27, 2008 11:43 AM by El Bruno

Buenas

@Leonardo: he agregado el link a la descarga del proyecto de prueba en VB.Net para que lo puedas ver. Igualmente los ejemplos de código que trae el SDK son muy buenos.

@Lonifasiko: mmm parece interesante lo probaré un poco a ver que tal van. Muchas gracias

Saludos

# re: [NET] DataVisualization.Charting.Chart: Controles para crear gráficos en .Net

Monday, October 27, 2008 11:04 PM by Leonardo

Muchas gracias Señor Bruno.. :D , espero no haber causado problemas, nuevamente gracias y estan muy bonitos.. :D

# re: [NET] DataVisualization.Charting.Chart: Controles para crear gráficos en .Net

Tuesday, October 28, 2008 11:58 AM by El Bruno

Leonardo ... ¿problemas? para nada ... :D

Saludos

# re: [NET] DataVisualization.Charting.Chart: Controles para crear gráficos en .Net

Wednesday, January 28, 2009 1:13 PM by Vicenç García

Hola Bruno,

excelente artículo. He seguido tus pasos y en un momentín tengo bastante avanzado lo que quería. Una cosilla que me falta es que necesito incrustar el gráfico generado en un PDF. Habia pensado en capturar una imagen del chart e incrustarla en el PDF, pero no he encontrado ninguna manera de hacerlo. Buceando un poco por la documentación he visto que hay un evento de post paint que te devuelve un objeto graphics, pero me parece una barbaridad tener que ir capturando el evento de post paint.

Sabes si hay alguna otra manera de hacerlo?

Muchas gracias,

Vicenç

# re: [NET] DataVisualization.Charting.Chart: Controles para crear gráficos en .Net

Wednesday, November 11, 2009 11:51 PM by ivet

Hola Bruno

Espero y me puedas ayudar :D

Estoy ocupando ese componente para las graficas en VB.NET, lo que  no encuentro es como poner en el Eje de las X la hora (10:20, 10:30, 10:40...)

Lo he intentado pero aun no lo logro, y ya me desespere. Porfavor .. necesito ayuda :(

Saludos..