Home | Java |C # |SQL |Manuales |Videos |


8

Ejemplos de JFreeChart – Parte 2

charts-excel-2007 En esta oportunidad les traigo otro ejemplo mas …. se trata de la gráfica PieChart que al igual que los anteriores ejemplos si se va a colocar en un proyecto aparte necesita que agreguemos las librerías que previamente configuramos.

Todos estos gráficos se colocan en un JFrame ….si alguien sabe como colocarlo dentro de un JInternalFrame le agradecería que me apoye con esa información. Hay que tener en cuenta que los métodos que estoy usando no son todos ….hay una variedad de métodos para diseñar mejor nuestro gráfico , pero ya depende de cada uno explorar esta parte y descubrir lo que JFreeChart puede y también lo que no soporta.

Una recomendación final para poder usar mejor los métodos es necesaria la documentación , esta se genera a la hora de instalar las librerías … pero yo no pude hacerla trate de hacerla con el ant de apache pero no me funcionó ( si alguien sabe como generar la documentación de JFreeChart le agradeceré que me brinde esa información para actualizar la entrada de instalación y de paso que me ayude a mí). SIn mas que decir vamos a empezar con una clase …yo la he llamado PieChart :

  • Esta clase así como en el anterior ejemplo la hacemos heredar de la clase ApplicationFrame
    public class PieChart extends ApplicationFrame

  • Después de esto vamos a importar las siguientes librerías :
    import java.awt.Color;
    import javax.swing.JPanel;
    import org.jfree.chart.ChartFactory;
    import org.jfree.chart.ChartPanel;
    import org.jfree.chart.JFreeChart;
    import org.jfree.chart.plot.PiePlot;
    import org.jfree.data.general.DefaultPieDataset;
    import org.jfree.data.general.PieDataset;
    import org.jfree.ui.ApplicationFrame;

  • Luego de esto vamos a construir el método constructor
        public PieChart(String titulo)
    {
    super(titulo);
    this.setContentPane(crearDemoPanel());
    }

  • Vamos a crear el método crearDataSet en el que vamos a crear la data del gráfico ; este método lo podemos mejorar colocando un parámetro el cual nos envíe la data a colocar :
        private static PieDataset crearDataSet()
    {
    DefaultPieDataset data=new DefaultPieDataset();
    data.setValue("Uno",new Double(43.2));
    data.setValue("Dos",new Double(10.0));
    data.setValue("Tres",new Double(27.5));
    data.setValue("Cuatro",new Double(17.5));
    data.setValue("Cinco",new Double(11.0));
    data.setValue("Seis",new Double(19.4));
    return data;
    }

  • Luego algo simple,hacemos el método crearChart ( hay que observar que nos pide un parámetro y devuelve un objeto del tipo JFreeChart) , este método lo que hace es crear el frame donde irá el gráfico ( si le en vez de ChartFactory.createPieChart colocamos ChartFactory.createPieChart3D tendremos un gráfico en 3D)  :
        private static JFreeChart crearChart(PieDataset data)
    {
    JFreeChart chart = ChartFactory.createPieChart(
    "Demo de PieChart", //Nombre del gráfico
    data, //data
    true, //Leyenda
    true,
    false);
    //Color de la ventana
    chart.setBackgroundPaint(Color.ORANGE);
    PiePlot plot = (PiePlot)chart.getPlot();
    //Color de las etiquetas
    plot.setLabelBackgroundPaint(Color.ORANGE);
    //Color de el fondo del gráfico
    plot.setBackgroundPaint(Color.WHITE);
    plot.setNoDataMessage("No hay data");

    return chart;
    }

  • Vamos a crear el último método ..este es de dos líneas nada más
        public static JPanel crearDemoPanel()
    {
    JFreeChart chart=crearChart(crearDataSet());
    return new ChartPanel(chart);
    }

  • Y por último en la clase main :
    public class Main
    {
    public static void main(String[] args)
    {
    PieChart demo2= new PieChart("PieChartDemo02");
    demo2.pack();
    RefineryUtilities.centerFrameOnScreen(demo2);
    demo2.setVisible(true);
    }
    }

  • Finalmente este será nuestro resultado : image
  • El ejemplo lo podremos descargar desde aquí :
    btn_6 
... Leer más ...
19

Ejemplos de JFreeChart – Parte 1

image Después de instalar y hacer las configuraciones de la librería jfreechart ahora procedemos a ver los diferentes tipos de gráficos que podemos crear con esta librería ; para ello colocaré algunos ejemplos que se han encontrado en la librería demo de JFreeChart y en la web.

Antes que nada vamos a crear un nuevo proyecto con el NetBeans → luego agregaremos las librerías que anteriormente habíamos configurado a nuestro proyecto , para esto : clic derecho en la carpeta  Libraries → Add Library y agregamos las librerías JFreeChart :

image

Hecho esto ya podemos empezar a crear nuestros gráficos ( esto lo vamos a hacer para cada proyecto en el que queremos usar la librería JFreeChart ).

GRÁFICO BARCHART
  • Creamos una clase y hacemos que herede de la clase Application frame , para ello debemos importar la librería : import org.jfree.ui.ApplicationFrame ; esto debe quedar así :
    public class BartChart extends ApplicationFrame


  • Hecho esto vamos a importar las siguientes librerías :
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.GradientPaint;
    import org.jfree.chart.ChartFactory;
    import org.jfree.chart.ChartPanel;
    import org.jfree.chart.JFreeChart;
    import org.jfree.chart.axis.CategoryAxis;
    import org.jfree.chart.axis.CategoryLabelPositions;
    import org.jfree.chart.axis.NumberAxis;
    import org.jfree.chart.plot.CategoryPlot;
    import org.jfree.chart.plot.CategoryPlot;
    import org.jfree.chart.plot.PlotOrientation;
    import org.jfree.chart.renderer.category.BarRenderer;
    import org.jfree.data.category.CategoryDataset;
    import org.jfree.data.category.DefaultCategoryDataset;
    import org.jfree.ui.ApplicationFrame;



  • Vamos a crear nuestro método constructor :

        public BartChart(String title)
    {
    super(title);
    CategoryDataset dataset= crearDataset();
    JFreeChart chart=crearChart(dataset);
    ChartPanel panel = new ChartPanel(chart,false);
    panel.setPreferredSize(new Dimension(700,500));
    this.setContentPane(panel);
    }



  • Hecho esto NetBeans nos pedirá que creemos dos métodos : crearDataset y crearChart que son métodos propios que nosotros crearemos y que mas adelante iremos completando :

        private static CategoryDataset crearDataset()
    {
    ........
    ........
    return dataset;
    }

    private static JFreeChart crearChart(CategoryDataset data)
    {
    ........
    ........
    return chart;
    }



  • Ahora vamos a llenar nuestro método crearDataset :

        private static CategoryDataset crearDataset()
    {
    //Nombre de las filas
    String serie1 ="Primero";
    String serie2 ="Segundo";
    String serie3 ="Tercero";
    //Nombre de las columnas
    String categoria1="Categoria1";
    String categoria2="Categoria2";
    String categoria3="Categoria3";
    String categoria4="Categoria4";
    String categoria5="Categoria5";

    DefaultCategoryDataset dataset = new DefaultCategoryDataset();
    //Aquí vamos a llenar nuestra data
    //pero esta data la podemos pasar por parámetros
    dataset.addValue(1.0, serie1,categoria1);
    dataset.addValue(4.0, serie1,categoria2);
    dataset.addValue(3.0, serie1,categoria3);
    dataset.addValue(5.0, serie1,categoria4);
    dataset.addValue(5.0, serie1,categoria5);

    dataset.addValue(5.0, serie2,categoria1);
    dataset.addValue(7.0, serie2,categoria2);
    dataset.addValue(6.0, serie2,categoria3);
    dataset.addValue(8.0, serie2,categoria4);
    dataset.addValue(4.0, serie2,categoria5);

    dataset.addValue(4.0, serie3,categoria1);
    dataset.addValue(3.0, serie3,categoria2);
    dataset.addValue(2.0, serie3,categoria3);
    dataset.addValue(3.0, serie3,categoria4);
    dataset.addValue(6.0, serie3,categoria5);

    dataset.addValue(1.0, serie1,categoria1);
    dataset.addValue(4.0, serie1,categoria2);
    dataset.addValue(3.0, serie1,categoria3);
    dataset.addValue(5.0, serie1,categoria4);
    dataset.addValue(5.0, serie1,categoria5);
    return dataset;
    }



  • Vamos a llenar el siguiente método, espero que los comentarios sean claros (si se desea cambiar la dirección de las barras debemos colocar PlotOrientation.VERTICAL por la que se encuentra en el ejemplo ) : 

        private static JFreeChart crearChart(CategoryDataset data)
    {
    JFreeChart chart= ChartFactory.createBarChart(
    "Demo de BartChart", //Nombre de la gráfica
    "Categorías", //Nombre del eje Horizontal
    "Valores", //Nombre del eje vertical
    data, //Data
    PlotOrientation.HORIZONTAL, //Orientación
    true, //Incluir leyenda
    true, //Información al pasar el mouse
    true); //URls
    //Dar color al fondo del panel
    chart.setBackgroundPaint(Color.ORANGE);
    //Dar color a cada categoria
    CategoryPlot plot =(CategoryPlot) chart.getPlot();
    plot.setBackgroundPaint(Color.BLUE);
    //Color del fondo del gráfico
    plot.setBackgroundPaint(Color.WHITE);
    //Lineas divisorias
    plot.setDomainGridlinesVisible(true);
    plot.setRangeGridlinePaint(Color.BLACK);
    //Calculo de los valores en el eje x
    final NumberAxis rangeAxis=(NumberAxis) plot.getRangeAxis();
    rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());

    BarRenderer renderer = (BarRenderer) plot.getRenderer();
    renderer.setDrawBarOutline(false);
    //Dar color a cada barra
    GradientPaint gp0= new GradientPaint(0.0f,0.0f,Color.blue,0.0f,0.0f,new Color(0,0,64));
    GradientPaint gp1= new GradientPaint(0.0f,0.0f,Color.green,0.0f,0.0f,new Color(0,64,0));
    GradientPaint gp2= new GradientPaint(0.0f,0.0f,Color.red,0.0f,0.0f,new Color(64,0,0));
    renderer.setSeriesPaint(0,gp0);
    renderer.setSeriesPaint(1,gp1);
    renderer.setSeriesPaint(2,gp2);

    CategoryAxis domainAxis = plot.getDomainAxis();
    domainAxis.setCategoryLabelPositions(
    CategoryLabelPositions.createUpRotationLabelPositions(Math.PI/6.0));
    return chart;
    }



  • Finalmente en nuestra clase main escribiremos lo siguiente :

    import org.jfree.ui.RefineryUtilities;
    public class Main
    {
    public static void main(String[] args)
    {
    BartChart demo1 = new BartChart("BarChartDemo01");
    demo1.pack();
    RefineryUtilities.centerFrameOnScreen(demo1);
    demo1.setVisible(true);
    }
    }



  • Este es el resultado final :

    image




  • El ejemplo lo pueden descargar de aquí :



btn_6

... Leer más ...