sábado, 23 de mayo de 2009

Diagrama de barras en java

Bueno para generar diagramas de barras partes y toda clase de diagramas de estadísticas existe esta API JFreeChart y la puedes descargar aquí la imagen generada es esta así se debe ver la ventana el código es este (descargalo aqui)
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.plot.PlotOrientation;
import java.awt.Dimension;
import javax.swing.*;
import java.io.File;


public class VentanaDiagrama extends JFrame {

public VentanaDiagrama(){
//Un DataSet es donde guardamos los datos
//que luego graficaremos
// en este caso usaremos DefaultCategoryDataset
//aunque hay muchos mas
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
DefaultCategoryDataset datasetArchivo = new DefaultCategoryDataset();
String equipos[]={"Emena","Gacellas","","MMC","R4"};
Integer i = 0;
for (i = 0; i<=equipos.length-1;i++){    
   int g=(int)(Math.random()*10);    
   int e=(int)(Math.random()*10);
   int p=(int)(Math.random()*10);
   //agregarValor   valor,categoria,elemento    dataset.addValue(g, "Ganados", equipos[i] );
   dataset.addValue(e, "Empatados", equipos[i]);    dataset.addValue(p, "Perdidos", equipos[i]);
   //utilizamos 2 dataset para guardar la misma informacion abajo explicacion
   datasetArchivo.addValue(g, "Ganados", equipos[i]);    datasetArchivo.addValue(e, "Empatados", equipos[i]);    
   datasetArchivo.addValue(p, "Perdidos", equipos[i]);   }   /*Aqui es donde convertimos esos datos que tenemos en el dataset en un driagrama o mejor dicho en un JFreeChart*/
   JFreeChart chart = ChartFactory.createBarChart("Tabla de Equipos", "Equipos", "Partidos", dataset, PlotOrientation.HORIZONTAL, true, true, true);
   /*JFreeChart chart = ChartFactory.createBarChart(titulo de la tabla, nombre de la categoria, nombre de los valores, dataset, orientacion, leyendas, tooltips, URLs);*/
   /*luego que lo convertimos en un diagrama bueno aun no lo podemos mostrar asi que en
   *este paso lo convertimos en un ChartPanel esto si es un componente visual*/
   ChartPanel chartPanel = new ChartPanel(chart, false);
   /*le damos un tamaño chartPanel.setPreferredSize(new Dimension(500, 500));*/
   chartPanel.setPreferredSize(new Dimension(500, 500));
   setContentPane(chartPanel);
   //esto es para pegarlo a la ventana   pack();   setVisible(true);
   //mostramos la ventana   
   try {    
      /*estas lineas que estan dentro de try son para generar un JPEG apartir de los datos en el     *dataset, pero si se usa el msmo por alguna razon que no comprendo se proboca un error usen el mismo en los dos y lo vetan*/    
      JFreeChart chartArchivo= ChartFactory.createBarChart("Tabla de Equipos", "Equipos", "Partidos", datasetArchivo, PlotOrientation.HORIZONTAL, true, true, true);
      /*aqui es donde generamos el archivo jpeg*/
      ChartUtilities.saveChartAsJPEG(new File("imagen.jpeg"),chartArchivo,this.getHeight(),this.getWidth());   
   }catch (Exception ex) {
      /*si ocurre algun error lo mostramos por aqui*/
   System.out.println (ex);   
   }
}

public static void main (String[] args) {   new VentanaDiagrama();  } }

No hay comentarios:

Publicar un comentario

DEJA UN COMENTARIO...
SI NO LO DICES NO LO SE

COMENTARIOS, DUDAS... SI NO LO DICES NO LO SE