Modelos.Grafica.java Source code

Java tutorial

Introduction

Here is the source code for Modelos.Grafica.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package Modelos;

import java.awt.Color;
import java.awt.Window;
import javax.swing.JDialog;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.NumberTickUnit;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.data.xy.XYSeriesCollection;

/**
 *
 * @author supermavp
 */
public class Grafica {

    private static final Color COLOR_SERIE_1 = new Color(255, 128, 64);
    private static final Color COLOR_SERIE_2 = new Color(28, 84, 140);
    private static final Color COLOR_RECUADROS_GRAFICA = new Color(31, 87, 4);
    private static final Color COLOR_FONDO_GRAFICA = Color.white;
    private JFreeChart chart;

    public JFreeChart crearGrafica(XYSeriesCollection dataset) {
        chart = ChartFactory.createXYLineChart("Sensores", "Tiempo", "Porcentaje", dataset,
                PlotOrientation.VERTICAL, true, // uso de leyenda
                false, // uso de tooltips  
                false // uso de urls
        );
        // color de fondo de la grfica
        chart.setBackgroundPaint(COLOR_FONDO_GRAFICA);

        final XYPlot plot = (XYPlot) chart.getPlot();
        configurarPlot(plot);

        final NumberAxis domainAxis = (NumberAxis) plot.getDomainAxis();
        configurarDomainAxis(domainAxis);

        final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
        configurarRangeAxis(rangeAxis);

        final XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) plot.getRenderer();
        configurarRendered(renderer);

        return chart;
    }

    public ChartPanel mostrarGrafica(Window owner) {
        ChartPanel panel = new ChartPanel(chart);
        JDialog ventana;
        ventana = new JDialog(owner, "Grafica");
        ventana.getContentPane().add(panel);
        ventana.pack();
        ventana.setVisible(true);
        //ventana.dispose();
        ventana.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
        return panel;
    }

    // configuramos el contenido del grfico (damos un color a las lneas que sirven de gua)
    private void configurarPlot(XYPlot plot) {
        plot.setDomainGridlinePaint(COLOR_RECUADROS_GRAFICA);
        plot.setRangeGridlinePaint(COLOR_RECUADROS_GRAFICA);
    }

    // configuramos el eje X de la grfica (se muestran nmeros enteros y de uno en uno)
    private void configurarDomainAxis(NumberAxis domainAxis) {
        domainAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
        domainAxis.setTickUnit(new NumberTickUnit(5));
    }

    // configuramos el eje y de la grfica (nmeros enteros de dos en dos y rango entre 120 y 135)
    private void configurarRangeAxis(NumberAxis rangeAxis) {
        rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
        rangeAxis.setTickUnit(new NumberTickUnit(5));
        rangeAxis.setRange(0, 100);
    }

    // configuramos las lneas de las series (aadimos un crculo en los puntos y asignamos el color de cada serie)
    private void configurarRendered(XYLineAndShapeRenderer renderer) {
        renderer.setSeriesShapesVisible(0, true);
        renderer.setSeriesShapesVisible(1, true);
        renderer.setSeriesPaint(0, COLOR_SERIE_1);
        renderer.setSeriesPaint(1, COLOR_SERIE_2);
    }

}