Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Java / Gráfico de lineas con jfreechart

Gráfico de lineas con jfreechart

Autor jc mouse domingo, junio 16, 2013

Los gráficos de líneas muestran una serie como un conjunto de puntos conectados mediante una línea. Los valores se representan por el alto de los puntos con relación al eje Y. Las etiquetas de las categorías se presentan en el eje X. Los gráficos de líneas suelen utilizarse para comparar valores a lo largo del tiempo.(microsoft)

grafico de lineas

Necesitamos

JFreeChart 1.0.14

– IDE Netbeans 7 o superior

Proyecto

1. Crea un nuevo proyecto con la siguiente estructura:

xy project

– Una JFrame que llamamos “interfaz.java

– Una clase XYLineChart.java

Agrega también la libreria JFreeChart

2. La interfaz consta de un JPanel y dentro de el, un JLabel, para la alineación se hace uso del layout BorderLayout, El JPanel debe tener un tamaño de 500×400.

gui

3. Clase XYLineChart.java

Esta clase se extiende de un ImageIcon y recibe por el constructor el tamaño (dimension) que tendrá el gráfico, mediante el metodo xyDataset(), se crean las series y se llenan los datos, finalmente se crea una imagen en memoria y se asigna a la clase.

import java.awt.Color;
import java.awt.Dimension;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.labels.StandardXYItemLabelGenerator;
import org.jfree.chart.labels.XYItemLabelGenerator;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
/**
 * @web http://www.jc-mouse.net
 * @author Mouse
 */
public class XYLineChart extends ImageIcon{

    /** Constructor de clase 
 * @param d Dimension
 */
    public XYLineChart( Dimension d ){

        //se declara el grafico XY Lineal
        XYDataset xydataset = xyDataset();
        JFreeChart jfreechart = ChartFactory.createXYLineChart(
        "Ingresos semanales" , "1ra semana del mes de Junio", "Ingresos en euros",  
        xydataset, PlotOrientation.VERTICAL,  true, true, false);               

        //personalización del grafico
        XYPlot xyplot = (XYPlot) jfreechart.getPlot();
        xyplot.setBackgroundPaint( Color.white );
        xyplot.setDomainGridlinePaint( Color.BLACK );
        xyplot.setRangeGridlinePaint( Color.BLACK );        
        // -> Pinta Shapes en los puntos dados por el XYDataset
        XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer) xyplot.getRenderer();
        xylineandshaperenderer.setBaseShapesVisible(true);
        //--> muestra los valores de cada punto XY
        XYItemLabelGenerator xy = new StandardXYItemLabelGenerator();
        xylineandshaperenderer.setBaseItemLabelGenerator( xy );
        xylineandshaperenderer.setBaseItemLabelsVisible(true);
 xylineandshaperenderer.setBaseLinesVisible(true);
 xylineandshaperenderer.setBaseItemLabelsVisible(true);                
        //fin de personalización

        //se crea la imagen y se asigna a la clase ImageIcon
        BufferedImage bufferedImage  = jfreechart.createBufferedImage( d.width, d.height);
        this.setImage(bufferedImage);
    }

    /**
 * Datos
 */
    private XYDataset xyDataset()
    {
        //se declaran las series y se llenan los datos
        XYSeries sIngresos = new XYSeries("Ingresos");
        XYSeries sEgresos = new XYSeries("Egresos");        
        //serie #1
        sIngresos.add( 1, 340);
        sIngresos.add( 2, 210);
        sIngresos.add( 3, 410);
        sIngresos.add( 4, 200);
        sIngresos.add( 5, 525);
        sIngresos.add( 6, 492);
        sIngresos.add( 7, 390);
        //serie #2
        sEgresos.add( 1, 90);
        sEgresos.add( 2, 434);
        sEgresos.add( 3, 741);
        sEgresos.add( 4, 91);
        sEgresos.add( 5, 412);
        sEgresos.add( 6, 361);
        sEgresos.add( 7, 271);

        XYSeriesCollection xyseriescollection =  new XYSeriesCollection();
        xyseriescollection.addSeries( sIngresos );        
        xyseriescollection.addSeries( sEgresos );        

        return xyseriescollection;
    }

}//-->fin clase

4. Finalmente para agregar el grafico al jlabel1 de la interfaz:

this.jLabel1.setIcon( new XYLineChart( this.jPanel1.getSize() ) );
this.jLabel1.setText("");

Ejecutando tenemos:

grafico de lineas

Proyecto en netbeans

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

SOAP .:. Servicio Web en c#

SOAP .:. Servicio Web en c#

SOAP (Simple Object Access Protocol) es un protocolo estándar que define cómo dos objetos en diferentes procesos pueden...

Personalizar JTable: Problema resuelto

Personalizar JTable: Problema resuelto

En este post se da respuesta a una pregunta realizada por facebook. El problema dice así: Se quiere personalizar un JTab...

Generador de números aleatorios UNIX

Generador de números aleatorios UNIX

El Método Congruencial Lineal Mixto es el más utilizado en simulación en computadoras digitales y esta basado en una rel...

Generar reportes con origen de datos JSON

Generar reportes con origen de datos JSON

JSON es un formato de texto ligero para el intercambio de datos ampliamente usado en los Servicios Web. En este post uti...

Búsqueda dinámica en JList

Búsqueda dinámica en JList

Un JList nos permite almacenar objetos en una lista y mostrarlos gráficamente en una serie vertical en el cual el usuari...

Leer archivos de texto

Leer archivos de texto

En este tutorial de android, vemos como leer un archivo de texto y mostrarlo en pantalla del celular, el texto elegido e...

9 comentarios en “Gráfico de lineas con jfreechart”

  1. max dice:

    Un gran aporte se agradece !!!!!!!!!!!! (y)

  2. Andrea dice:

    Hola y como se puede gràficar tomando los datos desde una base de datos, trabajando con NetBeans y MySQL

    1. Mouse dice:

      en el ejemplo no hacemos uso de base de datos, pero solo debes dar formato a los datos que obtengas de tu base de datos al tipo que acepta jfreechart

    2. Hector dice:

      Hola, una consulta
      Pudiste Conectar la Base de datos a JFreechart?!

  3. Matín dice:

    HOLA. SI QUIERO QUE ME MUESTRE LAS 2 COORDENADAS DE CADA PUNTO, EN TU EJEMPLO SOLO MUESTRA UNA QUE ES LA DEL EJE Y.

    TAMBIEN QUIERO MOSTRA EL EJE X ..
    GRACIAS, SALUDOS!

  4. Martin dice:

    Hola, como puedo mostrar las dos coordenadas de XY, en tu ejemplo solo muestras la del eje Y.

    Me gustaria tambien mostrar el eje X.

    Gracias, Saludos

  5. Hector dice:

    Hola, Como puedo mostrar informacion de una bd, que las filtre por meses con JCalendar y saque la informacion de la base de datos de ORACLE?!
    seria de mucha ayuda
    Saludos

    1. Mouse dice:

      el gráfico es independiente de la base de datos de uses, el gráfico se formara de acuerdo a los datos que le pases y esos datos tu los extraes de la base de datos según tus necesidades

  6. Daniel Alberto Valencia dice:

    Buena información,

    solo una pregunta si quisiera que solo el ultimo valor mostrara la etiqueta ¿Como se realizaría?

    Saludos.

Los comentarios estan cerrados

Comparte lo que sabes

Categorias

Últimas entradas

En este post aprenderemos lo que es la clonación de objetos en java o lo que es lo mismo, generación de nuevas instancia...

El índice TIOBE (TIOBE, The Importance of Being Earnest – “La importancia de ser honesto” – refe...

SDKMAN! es una herramienta para la administración de versiones paralelas de varios programas de desarrollo de software c...

Continuando con el estudio del meta lenguaje XML (Lenguaje de Marcado Extensible) bastante utilizado en el intercambio d...

Android Bolivia

MAUS