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


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

19 Comentarios:

sistemas0711 dijo...

Si alguien sabe como colocar etiquetas a la barra se le agradecería brindar esa info para agregarla a la entrada , mi correo es sistemas0711@gmail.com

Anónimo dijo...

calderonahuel@yahoo.com.ar
Hola, tengo una duda, uso NetBeans 6.8 y cuando escribo extends ApplicationFrame no me importa todo el paquete y me dice q no existe el paquete jfree.ui....

Anónimo dijo...

chamo es que esa libreria es una libreria externa tienes que descargar el .jar de la pagina de JFreeChart y ademas tienes que descargar el .jar de Common y adicionarlo a tu proyecto en la carpetas de librerias le das add library

Anónimo dijo...

HOla brother,baje el ejercicio q as mostrado y me sale este error:


run:
java.lang.VerifyError: (class: jfreechartex/Main, method: main signature: ([Ljava/lang/String;)V) Incompatible argument to function
Exception in thread "main"
Exception in thread "main" Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)



PORFAAA una ayuda.."!!

Anónimo dijo...

Eyy viejo, muchas gracias, me sirvieron mucho tus blogs...

Anónimo dijo...

Buenas soy nuevo con JChart, pero ya lo manejo bien. Lo que estoy tratando y no he logrado hacer es colocar el grafico en una zona espeficica del frame porq el frame va tener otras cosas como botones, info. otros graficos, etc.

PD: Les dejo una imagen para que vean maso menos como es lo que ando buscando

http://es.tinypic.com/r/66hhes/6

Anónimo dijo...

Buenas ayudenme soy el del ultimo msj de hacer aparecer el grafico en una zona especifica del frame mi correo es: bernalwilsona3@hotmail.com

Anónimo dijo...

q lento responden =S, alguien me puede ayudar?!?!?!

Anónimo dijo...

oye buenos tutoriales,


tengo un problema , espero y me puedas ayudar

a esta grafica de barras como le puedo hacer para agregarle un boton y varios textfiels y ke se grafique lo que esta en los textfields....

graciaaas

mi correo es fredy-2010-@hotmail.com

Christian D. dijo...

Como hacer para que me figure el valor de cada barra en la partes superior de la Barra.

thebest dijo...

muy interesante el post... pero hay un inconveniente.. no puedo descagar el codigo :(

Se podria arreglar eso?

sistemas0711 dijo...

Claro que si , en la parte derecha de tu pantalla hay una carpeta que se llama carpeta compartida dale clic allí(te va a enviar a mi skydrive) y anda a EJEMPLOS → EJEMPLOS DE JAVA → NETBEANS → 01)JFREECHART y allí puedes elegir que programa descargar

Anónimo dijo...

yo tengo el guide developer de JFreeChart(Esta en ingles, asi lo venden en la pagina) mandenme un e-mail a mime_walls@hotmail.es y conversamos del precio. Abstenerce noobs. Obvio que no les dejare tan caro como esta en la pagina ( más de $ 600 ). El libro es virtual.

richirm dijo...

hola amigo, agradecería mucho que me envies el proyecto a mi correo: locoxti_15_15_15@hotmail.com

Carlos dijo...

muy buen aporte el tuyo, estaba buscando algo de esto para tratar de hacer unos graficos que necesitaba.

MIKE dijo...

HOLA SALUDOS... ESTA MUY BUENO EL EJEMPLO... ESPERO ME PUEDAS AYUDAR EN ALGO:
TENGO YA LA GRAFICA EN PANTALLA Y ME GUSTARIA SABER SI CUANDO LE DE DOY CLIK EN UNA BARRA PUEDA REGRESARME UN VALOR EN UN "JOPTIONDIALOG" CUALQUIER VALOR DEL CUAL COMPONE LA BARRA DE LA QUE DOY CLIK
ESPERO ME PUEDAN AYUDAR GRACIAS

Emmanuel Martìnez Mateos dijo...

disculpa el enlace de la descarga esta roto

sistemas0711 dijo...

Hola que tal Emmanuel , todos los ejemplos estan colgados en mi Skydrive el cuál lo puedes visualizar en la parte derecha en la sección que dice Carpeta compartida , una vez que entras vaz a la carpeta Ejemplos → Ejemplos de Java → CAP_18_NETBEANS y allí encontrarás la carpeta de los JFreeChart

Unknown dijo...

Hola, alguien me podría decir cómo puedo cambiar el grosor de las lineas de ploteo, al crear un XYLineChart? se los agradecería...

Publicar un comentario

Ingresa tu comentario .... con el siguiente formato EMAIL - COMENTARIO para poder responderte :