Seraphinux
“Lloramos por el lamento de un pájaro pero no por la sangre de un pez, benditos aquellos que tienen voz.”
October 10th, 2008
Visitada: 913 veces, 2 en este dia.

Java: Crea Graficas Facilmente con JFreeChart

Saludos a todos, en este post mostrare con crear gráficas de manera fácil y sencilla en una aplicación Swing (java), para esto usaremos una librería llamada JFreeChart.

JFreeChart

Una imagen dice mas que mil palabra y eso es cierto, muchas veces tenemos datos en bruto que no muestran “consistencia” hasta que no los vemos representados en una gráfica. Pues bien, en mi caso usare mi querido Netbeans; asi que lo primero que haremos sera descargar la librería JFreeChart además de la librería JCommons la cual es necesaria para el correcto uso de JFreeChart [Los enlaces estan al final del post].

Una vez que las hemos descargado, vamos a crear un proyecto Java > Java Application, revisamos que la opción “Create Main Class” este desactivada, activamos las opción “Use Dedicated Folder for Storing Libraries” y como parámetro ponemos “.\lib”, la opción “Set as Main Project” la dejamos activada. Como nombre de proyecto en mi caso le pondré “GraficaFacil”.

Creamos un proyecto...

Descomprimimos las librerías previamente descargadas y agregamos los JAR a nuestro proyecto.

Agregamos librerias...

Una vez agregadas vamos a agregar un JFrame a nuestro proyecto.

Agregamos JFrame...

En la opción “Class Name” le ponemos GraficaFacilUI, en la opción “Package” yo le puse “com.seraphinux”; le damos “Finish”

Datos del JFrame...

Como ven nos a generado el “lienzo” de nuestro JFrame en donde podremos agregar nuestra gráfica. Muy bien en este ejemplo en particular crearemos una gráfica del tipo “XYSeries” [JFreeChar proporciona varios tipos de gráficas, para un caso en especial sirvete a consultar la documentación que nos proporciona la pagina del proyecto]

El código no tiene mucha ciencia, así que solo copio y pego, verán que es de lo mas entendible, en este caso graficaremos “Tipo de Cambio mes de Octubre”, estos datos los encontré en la pagina de Ingrammicro.


import java.awt.Graphics;
import java.awt.image.BufferedImage;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;

/**
 *
 * @author  Seraphinux
 */
public class GraficaFacilUI extends javax.swing.JFrame {
  // Imagen de la grafica
  BufferedImage grafica = null;

  /** Creates new form GraficaFacilUI */
  public GraficaFacilUI() {
    initComponents();
  }

  @SuppressWarnings("unchecked")
  // <editor-fold defaultstate="collapsed" desc="Generated Code">
  }// </editor-fold>

  // Esta funcion toma los valores a graficar
  //  y crea un BufferedImage con ellos
  public BufferedImage creaImagen() {
    XYSeries series = new XYSeries("Tipo de Cambio mes de Octubre");
    series.add(31, 500);
    series.add(30, 500);
    series.add(29, 500);
    series.add(26, 505);
    series.add(25, 510);
    series.add(24, 508);
    series.add(23, 509);
    series.add(22, 506);
    series.add(19, 508);
    series.add(18, 505);
    series.add(17, 505);
    series.add(16, 501);
    series.add(12, 498);
    series.add(11, 501);
    series.add(10, 503);
    series.add(9, 506);
    series.add(8, 509);
    series.add(4, 510);
    series.add(3, 513);
    series.add(2, 514);
    series.add(1, 516);

    XYDataset juegoDatos = new XYSeriesCollection(series);

    JFreeChart chart = ChartFactory.createXYLineChart(
      "Tipo de Cambio mes de Octubre", // Titulo de la grafica
      "Fecha", // Leyenda Eje X
      "Valor Dolar Facturacion", // Leyenda Eje Y
      juegoDatos,
      PlotOrientation.VERTICAL,
      false,
      false,
      false
      );

    // Definimos el tamanio de la grafica
    BufferedImage image = chart.createBufferedImage(350, 350);
    return image;

  }

  /**
  * @param args the command line arguments
  */
  public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {
      public void run() {
          new GraficaFacilUI().setVisible(true);
      }
    });
  }

  // Sobreescribimos el metodo paint del JFrame para
  //   pintar la imagen de nuestra grafica
  @Override
  public void paint(Graphics g)
  {
    if(grafica == null)
        grafica = this.creaImagen();
    g.drawImage(grafica,30,30,null);
  }

  // Variables declaration - do not modify
  // End of variables declaration

}

Finalmente presionamos F6 para que corra el “Main Project”, el programa queda así.

Proyecto Final...

Nada mal ¿verdad? y mas si tomamos en cuenta lo sencillo que fue crearla; creo que nos tardamos en crear el proyecto que en generar la gráfica. Espero les sea de utilidad y les permita crear programas mas completos.

Posts Relacionados

Una Respuesta to “Java: Crea Graficas Facilmente con JFreeChart”

  1. Gracias!!!!!!!!!!!, bastante ilustrativo

Dejanos un comentario.