Crear gráficas de series con JFreeChart

4
32561

Crear gráficas con series con JFreeChart.

0. Índice de contenidos.


1. Introducción

Como vimos en otro tutorial es muy sencillo exportar datos a una hoja de cálculo mediante Apache POI. Sin embargo, las hojas de cálculo no son la única solución para la exportación de datos. En determinados casos puede ser muy interesante plasmar toda esa información en una gráfica.

En este tutorial vamos a ver cómo generar gráficas con series de datos con ayuda de la librería JFreeChart. Para ello vamos a aprovechar los datos del ejemplo que utilizamos en el tutorial anteriormente mencionado.


2. Entorno.

El tutorial está escrito usando el siguiente entorno:

  • Hardware: Portátil MacBook Pro 15′ (2.2 Ghz Intel Core I7, 4GB DDR3).
  • Sistema Operativo: Mac OS Snow Leopard 10.6.7
  • Entorno de desarrollo: Eclipse 3.7 Indigo.
  • JFreeChart 1.0.13.


3. Diseñando la gráfica.

Como hemos dicho anteriormente, nos vamos a basar en datos de pilotos que dan vueltas de entrenamiento a un circuito para generar este ejemplo. Las características que tendrá nuestra gráfica serán las siguientes:

  • Cada serie (de tiempos por vuelta de un piloto) se representará de forma lineal.
  • El eje Y de la gráfica mostrará los tiempos en segundos en un rango de 120 a 135. El número de segundos del eje se visualizará de dos en dos (120, 122, 124…).
  • El eje X de la gráfica mostrará el número de vueltas, de la vuelta 1 a la vuelta 5.
  • Cada punto de la gráfica debe de mostrarse con un círculo (evidentemente los círculos serán unidos por la línea que representará la serie).
  • Los colores de las series deben ser distintos, así como las líneas de la gráfica que hacen de guía (líneas discontinuas que salen en el fondo de la gráfica).
  • En el pie de la gráfica debe figurar una leyenda con los nombres de los pilotos.


4. Construyendo la gráfica.

Pues bien, aquí tenemos la clase que nos generará la gráfica:

Bien, como vemos el método ChartFactory.createXYLineChart nos creará una gráfica de series representadas por líneas.

El método configurarPlot se ocupa de establecer el color de las líneas de fondo de la gráfica que hacen de guía. Son las líneas discontinuas verticales y horizontales que aparecen en el fondo de la gráfica.

El método configurarDomainAxis actua sobre el eje X, el eje del número de vueltas, y hace que se muestren números enteros y de uno en uno.

El método configurarRangeAxis actua sobre el eje Y, el de los tiempos, y hace que se muestren los tiempos comprendidos en el rango de 120 a 135 pero mostrando un número si, un número no.

El método configurarRndered hace que en cada punto (relación tiempo – vuelta de una serie) se muestre un círculo y que cada serie sea de un color.


5. Ejecutando el ejemplo.

Por último, nos queda cargar los datos de los pilotos (usaremos los del otro tutorial) y generar la gráfica en un fichero.

Observemos que añadimos los tiempos de cada piloto en una serie llamada XYSeries. A esta serie únicamente le indicamos el nombre, que se corresponderá con el nombre del piloto, y el tiempo por vuelta. Ej: en la serie 1 hemos indicado que en la vuelta 1 el tiempo fue de 131.78 segundos, en la vuelta 2 fue de 129.95, etc…

Añadimos las gráficas a un dataset de tipo XYSeriesCollection y se lo pasamos al método crearGrafica.

Por último, con el método saveChartAsPNG de la clase ChartUtilities generamos una imagen en formato png, con el alto y ancho que queramos y que que dará como resultado una imagen llamada tiempos-entrenamiento.png. La gráfica resultante es la siguiente:


6. Referencias.


7. Conclusiones.

En este tutorial hemos visto lo sencillo que es generar gráficas de series lineales con ayuda de la librería JFreeChart.

Nótese que esta librería es capaz de generar una gran cantidad de tipos de gráficas que pueden verse en la demo de su página web.

Espero que este tutorial os haya sido de ayuda. Un saludo.

Miguel Arlandy

marlandy@autentia.com

4 Comentarios

  1. Excelente tutorial para empezar para aprender. Tengo una duda y aun no puedo resolverlo. Debo hacer el mismo grafico que diste como ejemplo, en la linea azul en los puntos, por ejemplo en la coordenada 129,80;3 quiero poner una etiqueta, un string como \\\»Aprobado\\\», tenes idea como debo hacerlo

  2. Yo quisiera saber si hay una forma de colocar texto en lugar de los números del eje de las x en la parte de abajo en lugar de que sea 1 2 3 4 5 que sea texto como platos cucharas vasos etc

  3. serie2.add(1, 133.16);
    serie2.add(«txt here», 132.32);
    serie2.add(«txt here», 129.86);
    serie2.add(«txt here», 128.02);
    serie2.add(«txt here», 132.45);

Dejar respuesta

Please enter your comment!
Please enter your name here