Gráficos en Java con JFreeChart

30/May/2012 Java 7 Comentarios

Mientras tanto hago el análisis de mi proyecto de título me he visto en la necesidad de buscar algunas librerías gráficas para que me faciliten el trabajo en Java, es así que he llegado a JFreeChart, librería para estadísticas gráficas. Hoy por hoy les explicaré lo sencillo que resulta crear un gráfico con JFreeChart.

Lo primero que tenemos que hacer es agregar la librerías de JFreeChart, si no las tenemos, podemos acceder a ellas desde la página de sus programadores.

Principalmente trabajaremos con dos librerías que son jcommon-1.0.16.jar y jfreechart-1.0.13.jar

Las librerías quedarán así en tu proyecto:

Una vez que hayamos agregado las librerías de JFreeChart cremos un proyecto nuevo y agregamos un JFrame. Este JFrame puede servir directamente como un gráfico, pero en éste ejemplo lo he usado para agregar un botón que hará la llamada del gráfico en un nuevo JFrame.

Nos vamos a el JFrame que ya agregamos, y añadimos sobre él un botón, el cual llamará al gráfico. Visualmente debería quedar algo así:

Lo primero será declarar un atributo JFrame dentro de nuestra clase, la cual hemos llamado GraficosJFreeChart:

  1. JFrame frame = new JFrame("Probando JFreeChart");

El constructor de JFreeChart inicializaremos el JFrame, cambiaremos su tamaño y posición en la pantalla:

  1. frame.setSize(500, 270);
  2. frame.setLocationRelativeTo(getRootPane());
  3. this.setLocationRelativeTo(getRootPane());

Cabe destacar que cuando hacemos referencia a "this" estamos haciendo referencia a la ventana de la clase principal en éste caso la primera que agregamos.

La acción de click sobre el botón será la que lance toda la ejecución y carga de los gráficos JFreeChart.

  1. private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {...}

Lo primero que haremos con los gráficos JFreeChart es crear un DataSet, que es dónde vamos a meter los datos que representaremos gráficamente. Para ello utilizamos un DefaultCategoryDataset y añadimos los valores mediante el método .addValue().

  1. DefaultCategoryDataset dataset = new DefaultCategoryDataset();
  2. dataset.addValue(1.0, "Row 1", "Column 1");
  3. dataset.addValue(5.0, "Row 1", "Column 2");
  4. dataset.addValue(3.0, "Row 1", "Column 3");
  5. dataset.addValue(2.0, "Row 2", "Column 1");
  6. dataset.addValue(3.0, "Row 2", "Column 2");
  7. dataset.addValue(2.0, "Row 2", "Column 3");
  8. dataset.addValue(10.0,"Row 3", "Column 4");
  9. dataset.addValue(10.0,"Row 3", "Column 4");

Destaquemos que las llamadas al método addValue() se agregan un valor, un fila y una columna determinada. ¿Estas pensando en una base de datos? Sí, fácilmente podrían salir los datos de una base de datos. Quizás mas adelante lo expliquemos.

Una vez que tenemos el DataSet relleno nos dedicaremos a generar el gráfico. Los gráficos en JFreeChart se generan mediante la factoría CharFactory. En este caso, como queremos crear un gráfico de barras utilizamos el método .createBarChart().

  1. JFreeChart chart = ChartFactory.createBarChart(
  2. "Ejemplo básico para Linea de Codigo",
  3. "Categorías",
  4. "Valores",
  5. dataset,
  6. PlotOrientation.VERTICAL,
  7. true,
  8. true,
  9. true
  10. );

En la creación del gráfico al método createBarChart le pasamos el título, los valores de los textos de los ejes, si queremos que haya leyenda,... y lo más importante el DataSet con los datos.

El gráfico creado hay que mostrarlo. Para mostrar un gráfico en JFreeChart hay que ponerlo en un Panel. Así que creamos un panel con la clase ChartPanel al cual le pasamos como parámetro el gráfico que acabamos de crear. Después mostramos el panel en el JFrame.

  1. ChartPanel chartPanel = new ChartPanel(chart, false);
  2. frame.setContentPane(chartPanel);
  3. frame.setVisible(true);

Ya tenemos nuestro primer gráfico con Java y JFreeChart.

Vídeos sobre Java


7 comentarios en “Gráficos en Java con JFreeChart”

Pablo Ruiz

Cesar

Necesito el codigo para hacer un diagrama de ganttt,pero con las actividades por intervalos.Ejemplo
act1 ———-
act2 ——
act3–
act4 ———–

Pablo Ruiz

EMILIANO GARCIA

Hola una consulta… como puedo hacer para generar un grafico estadístico pero con datos de la base de datos???? por ejemplo la cantidad vendida de productos por fecha. saludos y espero la respuesta.

Pablo Ruiz

Carlos

Al recorrer tu ResultSet por cada item te vas agregando con “addValue” al DefaultCategoryDataset

Pablo Ruiz

Maiker

Donde puedo conseguir material donde tome datos de la base de datos y la misma se grafique?

Pablo Ruiz

EMILIANO GARCIA

pudiste solucionar el problema?? yo estoy igual y no se como hacerlo. saludos

Pablo Ruiz

Omar Angulo

Como siempre lineadecodigo.com con la respuesta precisa y funcional.

Son los mejores.

Gracias.

Pablo Ruiz

Luis

Bajé los dos jar sugeridos y los puse en la carpeta sugerida, sin embargo me dice que debo crae la clase DefaultCategoryDataset…qué puede ser..?

¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*

*