Aprende Java Aprende Php Aprende C++ Aprende HTML 5 Aprende JavaScript Aprende JSON Aprende MySQL Aprende SQLServer Aprende Visual Basic 6 Aprende PostgreSQL Aprende SQLite Aprende Redis Aprende Kotlin Aprende XML Aprende Linux VSC Aprende Wordpress Aprende Laravel Aprende VueJS Aprende JQuery Aprende Bootstrap Aprende Netbeans Aprende Android
Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube Sigueme en TikTok Sigueme en Whatsapp
Home / Java / Gráfico de lineas con jfreechart

Gráfico de lineas con jfreechart

Por 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 https://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

Artículos similares

Migrar proyecto Netbeans a Eclipse

En ocasiones por motivos cualesquiera que sea queremos pasar proyectos hechos en netbeans a Eclipse, Netbeans cuenta con[...]

Servicio Web SOAP en Java

En este post vamos a construir un Servicio Web bajo el protocolo SOAP (Simple Object Access Protocol) el cual básicament[...]

Construye tu swing Versus para el mundial 2014

Para ponerse a tono con el ambiente mundialista de Brasil 2014, en este post construiremos un swing java al que llamarem[...]

Generar clases desde Esquemas XSD

XJC es una herramienta de linea de comandos del compilador de esquemas de JAXB que se puede utilizar para convertir un e[...]

Informes Access con JasperReport/iReport

En este post vemos la forma de conectar una base de datos Access con JasperReport para diseñar y ejecutar reportes. Para[...]

¿Qué es AngularJS?

Bienvenido a este artículo soy Jose Pedraza Desarrollador Web por más de 7 años, escribiré una serie de artículos para i[...]