Ir al contenido principal

Hacer gráficas con Java

PastelCuando hablamos de estadística y volúmenes de datos sabemos con certeza de que hablamos de números, sin embargo, en la mayoría de las ocasiones es mucho más sencillo entender el significado o el impacto dichos números mediante gráficos de barras, pastel, lineales, etc. Por ello, en este caso dedicaré este artículo a explicar la generación de gráficas en Java utilizando la librería JFreeChart.

En esta imagen podrás ver un ejemplo del resultado tras realizar los pasos que detallaré en los párrafos siguientes:

1

:: La librería

Como lo he mencionado en el párrafo introductorio estaremos utilizando la librería JFreeChart para generar las gráficas, concretamente la versión 1.0.13 (que es la más reciente al momento de la publicación de este artículo). Dicha librería es gratuita y está disponible para su descarga en el siguiente enlace:

http://bit.ly/tsw1Uv

Una vez que tengas el archivo jar en tu disco duro podrás comenzar con tu proyecto...

:: Crear el proyecto en NetBeans

Creamos un proyecto nuevo en NetBeans con el nombre de Graficador, y una vez creado incluimos la librería jfreechart-1.0.13.jar (descargada en el paso previo) como biblioteca de nuestro proyecto dando clic derecho en Biblioteca > Agregar Archivo Jar / Carpeta y seleccionándola desde la ubicación de su descarga.

:: Definir el comportamiento

Lo primero que vamos a realizar es editar la clase Graficador.java (que es la clase principal) y añadir los import´s necesarios para que la aplicación funcione, en este caso son los siguientes:

     import org.jfree.chart.ChartFactory;
    import org.jfree.chart.ChartFrame;
    import org.jfree.chart.JFreeChart;
    import org.jfree.chart.plot.PlotOrientation;
    import org.jfree.data.category.DefaultCategoryDataset;
    import org.jfree.data.general.DefaultPieDataset;

Posteriormente crearemos un método para cada uno de los tipos de gráficas que vamos a crear que son: Pastel, Barras y Lineal, en cada uno de ellos detallaremos los datos correspondientes a cada una de ellas.

:: Gráfica Pastel

Creamos un método público y estático (para mandarlo llamar directo de main) que no retorne valor de nombre pastel()...

    public static void pastel() {
    .
    .
    }

Dentro de él creamos un arreglo que contendrá los datos...

    DefaultPieDataset dataset = new DefaultPieDataset();
   
...con las colecciones de datos que vamos a incluir en la gráfica mediante el método llamado setValue.("Etiqueta",valor) de la siguiente manera:

        dataset.setValue("Android", 39.2);
    dataset.setValue("iOs", 22.9);
    dataset.setValue("Windows Mobile", 15.5);
    dataset.setValue("Symbian", 18.3);
    dataset.setValue("Otros", 12.3);
   
Cuando ya hemos definido los datos podemos crear la gráfica mediante el objeto JFreeChart de la siguiente manera:

        JFreeChart grafica = ChartFactory.createPieChart3D(
    "Grafica pastel", // El nombre de la gráfica
    dataset, // El arreglo de datos
    true, // Indica si lleva leyenda
    true, // Indica si lleva tooltips
    false); // Indica si son URls
   
En este momento hemos creado el gráfico pero no hemos indicado dónde mostrarlo, para ello utilizaremos el objeto ChartFrame pasándole 2 parámetros: El nombre de la ventana y la gráfica a mostrar.

         ChartFrame frame = new ChartFrame("Graficador", grafica);
   
Por último en esta gráfica empaquetamos la ventana y la hacemos visible...
   
    frame.pack();
    frame.setVisible(true);
   
Para poder ver esta gráfica solo es necesario llamar al método pastel() dentro del método main y correr la aplicación...

    public static void main(String[] args) {
        pastel();
    }

   
Tras realizar los pasos anteriores podrás visualizar un gráfico como el que se muestra al inicio del artículo. Continuemos.

:: Gráfica de Barras

Nuevamente creamos un método público y estático que no retorne valor, en este caso de nombre barras()...

    public static void barras() {
    .
    .
    }

Dentro creamos un arreglo que contendrá los datos...

    DefaultCategoryDataset dataset = new DefaultCategoryDataset();
   
...con las colecciones de datos que vamos a incluir en la gráfica mediante el método llamado addValue(valor,"Concepto","Categoria") de la siguiente manera:

        dataset.addValue(1.0, "Egresos", "Enero");
    dataset.addValue(3.0, "Egresos", "Febrero");
    dataset.addValue(2.0, "Egresos", "Marzo");
    dataset.addValue(2.0, "Ingresos", "Enero");
    dataset.addValue(3.0, "Ingresos", "Febrero");
    dataset.addValue(4.0, "Ingresos", "Marzo");
   
Cuando ya hemos definido los datos podemos crear la gráfica mediante el objeto JFreeChart de la siguiente manera:

    JFreeChart chart = ChartFactory.createBarChart(
    "Grafica de barras", // El titulo de la gráfica
    "Mes", // Etiqueta de categoria
    "Valor", // Etiqueta de valores
    dataset, // Datos
    PlotOrientation.VERTICAL, // orientacion
    true, // Incluye Leyenda
    true, // Incluye tooltips
    false // URLs?
    );
   
Nuevamente para mostrar el gráfico acudimos al objeto ChartFrame:

    ChartFrame frame = new ChartFrame("Graficador", chart);
    frame.pack();
    frame.setVisible(true);

   
Y para mostrarlo hacemos exactamente lo mismo que en el gráfico anterior.

    public static void main(String[] args) {
        barras();
    }

   
Con lo cual obtendrás el siguiente resultado:

Grafica de Barras

:: Gráfica Lineal

Nuevamente creamos un método público y estático que no retorne valor, pero ahora de nombre lineal()...

    public static void lineal() {
    .
    .
    }

Dentro creamos un arreglo que contendrá los datos...

    DefaultCategoryDataset dataset = new DefaultCategoryDataset();
   
Y posteriormente el arreglo que contendrá los datos los cuales estableceremos mediante addValue(valor,"Concepto","Categoria")...

    dataset.addValue(212, "Usuarios", "Agosto");
    dataset.addValue(504, "Usuarios", "Septiembre");
    dataset.addValue(1520, "Usuarios", "Octubre");
    dataset.addValue(1842, "Usuarios", "Noviembre");
    dataset.addValue(2991, "Usuarios", "Diciembre");
   
Nuevamente acudimos a JFreeChart para crear la gráfica...

    JFreeChart chart = ChartFactory.createLineChart(
    "Grafica Lineal", // Titulo
    "Mes", // Etiqueta de datos
    "Usuarios", // Etiqueta de valores
    dataset, // Datos
    PlotOrientation.VERTICAL, // orientacion
    false, // Incluye leyenda
    true, // Incluye tooltips
    false // urls
    );
   
Y a ChartFrame para mostrarla...

    ChartFrame frame = new ChartFrame("Graficador", chart);
    frame.pack();
    frame.setVisible(true);

   
Llamamos a lineal() desde main() y corremos la aplicación...

    public static void main(String[] args) {
        lineal();
    }
   
Al realizar esto obtendremos un gráfico como este:

Grafica Lineal

Estos son ejemplos sencillos, si deseas ahondar en la creación de gráficas no dudes en darte una vuelta por el sitio oficial de la librería JFreeChart.

Como es usual, todo lo necesario para realizar lo contenido en este tutorial puedes descargarlo desde el siguiente enlace:

DescargarDescargar

Si te gustó el artículo puedes compartirlo desde los botones que se encuentran en la parte inferior (Twitter, Facebook, Google+).

De igual manera puedes suscribirte al blog original feed  para que los nuevos artículos lleguen a tu bandeja de correo o lector de Feeds favorito desde los enlaces del lado derecho de la página.

Si tienes alguna duda o algo que decir te invito a que dejes tu comentario.

Comentarios

  1. Contraseña:
    http://monillo007.blogspot.com

    Saludos.

    ResponderBorrar
  2. woooooowwww mil años vatallando con eso y asi de facil se puede :) grax amigo :D

    ResponderBorrar
  3. muy bueno gracias por el aporte

    ResponderBorrar
  4. Cuando lo ejecuto me genera un error: Exception in thread "main" java.lang.NoClassDefFoundError: org/jfree/util/PublicCloneable

    Me puedes ayudar a resolverlo, por favor. Gracias
    mi correo: airtega@gmail.com

    ResponderBorrar
  5. HOLA SALUDOS... ESTA MUY BUENO EL EJEMPLO... ESPERO ME PUEDAS AYUDAR EN ALGO:
    TENGO YA LA GRAFICA EN PANTALLA Y ME GUSTARIA SABER SI CUANDO LE DE DOY CLIK EN UNA BARRA PUEDA REGRESARME UN VALOR EN UN "JOPTIONDIALOG" CUALQUIER VALOR DEL CUAL COMPONE LA BARRA DE LA QUE DOY CLIK
    ESPERO ME PUDAN AYUDAR GRACIAS

    ResponderBorrar
  6. Lo hice con jfreechart-1.0.14 y batalle por no saber que se requiere tambien la lib jcommon-1.0.17

    ResponderBorrar
  7. estimado, quiero saber porque estas aplicaciones graficas no funcionan en linux.. sabes porque?? o como se soluciona??

    Saludos .. si quieres me respondes a conte_7@hotmail.com

    ResponderBorrar
  8. SI quisiera que los valores fueran dinamicos se podria?

    ResponderBorrar
  9. Hombre, realmente un exelente artículo. Útil, con ejemplos claros. Vaya realmente muy bueno... gracias.

    ResponderBorrar
  10. Muy bueno, pero el link esta roto :s habilitalo por favor

    ResponderBorrar
  11. el link no sirve arreglalo

    ResponderBorrar
  12. como puedo mostrar los registros de mi base datos en los gráficos

    ResponderBorrar

Publicar un comentario

Este es un espacio abierto, puedes escribir lo que gustes respetando los siguientes puntos:

1.- Lo que escribas esté relacionado con el post, si gustas contactarme puedes hacerlo aqui.

2.- Todo es cuestionable, aunque ten en cuenta que existen formas de hacerlo, evita las agresiones y revisa tu lenguaje antes de publicar un comentario.

3.- Siempre hay tres verdades: tu verdad, mi verdad y la verdad, por lo que opiniones diferentes no necesariamente son equivocadas.

4.- Los comentarios son una forma de discusión abierta, por lo que al publicar uno, implícitamente entras a una discusión, con todo lo que esto representa.

5. Me reservo el derecho de eliminar comentarios que no respeten las condiciones mencionadas anteriormente.

Toma en cuenta que puedes utilizar emoticones en tu comentario, para ver una lista de los disponibles da clic en este enlace.

Entradas más populares de este blog

3 sencillos pasos para tramitar la ayuda por desempleo de la AFORE

¿Tienes dinero ahorrado en tu AFORE y en este momento no estás trabajando o estás trabajando pero no tienes seguro social? Si respondiste sí a la pregunta anterior entonces hay una buena noticia para ti: puedes retirar una parte del dinero que tienes ahorrado. Y lo mejor, es muy sencillo. En este artículo te diré paso a paso qué hacer para obtener ese dinero, sin tecnicismos legales ni nada por el estilo, simple y sencillamente lo que necesitas saber. Paso Número 1: Obtener los últimos 2 estados de cuenta de tu Afore Esto en la mayoría de los casos es sumamente sencillo ya que dichos estados de cuenta llegan directamente al domicilio del ahorrador, si este es tu caso puedes saltar lo restante en este punto y continuar con el paso número 2, en caso contrario sigue leyendo… Si no tienes tus estados de cuenta debes ponerte en contacto con la empresa encargada de administrar tu ahorro para que te los proporcione, normalmente te van a pedir una identificación oficial, comprobante de

Conectar una base de datos en MySQL con NetBeans

NetBeans es una plataforma para el desarrollo de aplicaciones de escritorio usando Java y a un Entorno integrado de desarrollo (IDE) desarrollado usando la Plataforma NetBeans. Si eres un programador y desarrollas tus aplicaciones en Java seguramente necesitarás conectar una base de datos tipo MySQL a este entorno algún día, bueno, si lo necesitas ahora, he aquí una explicación paso a paso de cómo conectar ambas herramientas.

4 extraordinarias aplicaciones espía para Android

Le andas haciendo al James Bond y necesitas grabar video, voz o tomar fotos desde tu dispositivo Android sin ser notado? Aquí 4 excelentes aplicaciones que facilitarán tus hazañas de 007 en menos de lo que canta un gallo.

c606 c6nf5g4r6 e3 tec3ad6 [Como configurar el teclado]

¿Problemas al escribir con el teclado? ¿Tratas de escribir la letra ‘o’ y sale el número ‘6’ o algo por el estilo? La solución puede ser más simple de lo que parece. La solución a tu problema tras el salto...

Conexión, consulta y ejecución de sentencias en MySQL con Java

Anteriormente escribí este mismo artículo pero para bases de datos en Oracle . En este artículo prácticamente me copio y pego para explicar paso a paso cómo realizar la conexión a MySQL en Java, así como la forma de realizar consultas a los registros existentes y ejecutar sentencias de inserción, borrado y actualización de datos. Al final del artículo tendremos una clase que encapsulará todos los procedimientos necesarios para trabajar con la base de datos.