Siguiendo con las librerias, JFreeChart es una API que permite hacer gráficos de torta, de torta en 3D, gráficos de barra, de lineas, etc.
Los gráficos siempre resultan de gran utilidad al momento de presentar la información de una manera que sea sencilla de comprender, y que se expliquen por si mismos, es decir: si tenemos un grafico de torta dividida que indica la cantidad de alumnos de un curso que son hombres y la otra que son mujeres, y vemos que la parte de la torta que son mujeres es mas grande que la de hombres, se entiende a simple vista que existe una mayor población de mujeres que de hombres.
Voy a mostrar dos ejemplos, uno de barras y otro de torta para que puedan ver que son bastante sencillos de hacerlos.
Grafico de Torta:
package srt.charts;
import java.awt.*;
import javax.swing.*;
import org.jfree.chart.*;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
public class EjemploTorta extends JFrame {
public EjemploTorta() {
super("Ejemplo Torta");
getContentPane().add(createDemoPanel());
pack();
setVisible(true);
}
/**
* Devuelve los datos del grafico
*/
private PieDataset createDataset() {
DefaultPieDataset defaultpiedataset = new DefaultPieDataset();
defaultpiedataset.setValue("Hombres", new Double(40));
defaultpiedataset.setValue("Mujeres",new Double(60));
return defaultpiedataset;
}
/**
* Devuelve el grafico construido en funcion de los datos que le son pasados.
*/
private JFreeChart createChart(PieDataset piedataset) {
JFreeChart jfreechart = ChartFactory.createPieChart("Alumnos en clase", piedataset, true, true, false);
PiePlot pieplot = (PiePlot)jfreechart.getPlot();
pieplot.setLabelFont(new Font("SansSerif", 0, 12));
pieplot.setCircular(false);
pieplot.setLabelGap(0.02D);
return jfreechart;
}
/**
* Devuelve un JPanel con el grafico
*/
public JPanel createDemoPanel() {
JFreeChart jfreechart = createChart(createDataset());
return new ChartPanel(jfreechart);
}
public static void main(String[] args) {
EjemploTorta torta = new EjemploTorta();
}
}
Grafico de Barras:
package srt.charts;
import java.awt.*;
import javax.swing.*;
import org.jfree.chart.*;
import org.jfree.chart.axis.*;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.text.TextBlockAnchor;
import org.jfree.ui.*;
import org.jfree.util.Log;
import org.jfree.util.PrintStreamLogTarget;
public class EjemploBarra extends JFrame {
public EjemploBarra() {
super("Ejemplo Barra");
getContentPane().add(createDemoPanel());
pack();
setVisible(true);
}
/**
* Devuelve los datos del grafico
*/
private CategoryDataset createDataset() {
DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset();
defaultcategorydataset.addValue(40,"Hombres", "A?o 2008");
defaultcategorydataset.addValue(60,"Mujeres", "A?o 2008");
defaultcategorydataset.addValue(30,"Hombres", "A?o 2009");
defaultcategorydataset.addValue(70,"Mujeres", "A?o 2009");
return defaultcategorydataset;
}
/**
* Devuelve el grafico construido en funcion de los datos que le son pasados.
*/
private JFreeChart createChart(CategoryDataset categorydataset) {
JFreeChart jfreechart = ChartFactory.createBarChart3D("Clase de Java","Sexo","Cantidad", categorydataset, PlotOrientation.VERTICAL, true, true, false);
CategoryPlot categoryplot = jfreechart.getCategoryPlot();
categoryplot.setAnchorValue(2D);
categoryplot.setForegroundAlpha(1.0F);
CategoryAxis categoryaxis = categoryplot.getDomainAxis();
CategoryLabelPositions categorylabelpositions = categoryaxis.getCategoryLabelPositions();
CategoryLabelPosition categorylabelposition = new CategoryLabelPosition(RectangleAnchor.LEFT, TextBlockAnchor.CENTER_LEFT, TextAnchor.CENTER_LEFT, 0.0D, CategoryLabelWidthType.RANGE, 0.5F);
categoryaxis.setCategoryLabelPositions(CategoryLabelPositions.replaceRightPosition(categorylabelpositions, categorylabelposition));
return jfreechart;
}
/**
* Devuelve un JPanel con el grafico
*/
public JPanel createDemoPanel() {
JFreeChart jfreechart = createChart(createDataset());
return new ChartPanel(jfreechart);
}
public static void main(String[] args) {
EjemploBarra barra = new EjemploBarra();
}
}
Cuales son los metodos importates?
Los metodos importantes en estas dos clases son:
createDataset() Que es el que construye el objeto donde se almacenan los datos del gráfico, presten atención que dependiendo del gráfico sera el tipo de objeto que deban utilizar, el gráfico de barras utiliza DefaultCategoryDataset, mientras que el gráfico de torta usa DefaultPieDataset. Existen otros tipos que permiten presentar la información de diferente modo.
createChart() Este metodo cambia el tipo de parámetro que recibe dependiendo del tipo de gráfico que sea. Lo importante de este metodo es esta línea:
Para el caso del gráfico de torta:
JFreeChart jfreechart = ChartFactory.createPieChart("Alumnos en clase", piedataset, true, true, false);
Para el caso del grafico de barras:
JFreeChart jfreechart = ChartFactory.createBarChart3D("Clase de Java","Sexo","Cantidad", categorydataset, PlotOrientation.VERTICAL, true, true, false);
Desde esa linea, uno puede definir los valores del título, horientacion, leyenda del eje X e Y para el caso de las barras.
No hay comentarios:
Publicar un comentario