Todos los que programamos Aplicaciones de Escritorio nos topamos con la necesidad de Realizar Graficos de cierta Informacion ( casi siempre de hecho 😉 ), en esta ocacion veremos como hacer graficos con Java utilizando la libreria JFreeChart ( para mi la mejor 😀 ) Con JFreeChart podremos hacer Graficos de todo tipos, colores, sabores, planos y en 3d.. vaya que JFreeChart te permite hacer casi de todo 😀 daremos un vistazo a lo basico, que es JFreeChart.. Descargar e Instalar.. como Utilizarla en tus Aplicaciones.. Algunos Ejemplos de Graficos de Barras, pastel, Lineas, 3D.. y bueno vamos ya al Tutorial.
Requerimientos
- JFreeChart (Pagina Oficial)
- Descarga de JFreeChart
JFreeChart
JFreeChart es una libreria/extension Gratuita para el lenguaje de Programacion Java la cual te permite utilizar Graficos de todo tipo y de gran calidad en tus Proyectos. En resumen te permite poner Graficos de barras, Graficos de Lineas o Graficos de Pastel ( y de mas tipos 😉 ) en tus Aplicaciones Java 😀



Ehh sigues sin convencerte? 🙁 mira mas ejemplos de lo que puedes hacer con JFreeChart aqui samples
Como Utilizar JFreeChart en tus Aplicaciones ?
Descarga JFreeChart y la libreria JCommon que es tambien necesaria ( link arriba en Requerimientos ) y agregalas a tu proyecto.

¿Necesitas aprender algo nuevo ? Ve a Udemy, busca el tema del que quieres aprender, selecciona el curso para ti y continua con tu aprendizaje.
Udemy
Para Comenzar veremos un Ejemplo Facil de como crearte un Grafico rapido en un ChartFrame que es una ventana propia para mostrar los Graficos, luego veremos mas a detalle como elegir el tipo de grafico y como mostrarlo en otro tipo de componente que nos resulte mas facil como por ejemplo un panel, por lo mientras nos servira para analizar lo basico de JFreeChart..
public class Main {
public static void main(String args[]){
// Fuente de Datos
DefaultPieDataset data = new DefaultPieDataset();
data.setValue("C", 40);
data.setValue("Java", 45);
data.setValue("Python", 15);
// Creando el Grafico
JFreeChart chart = ChartFactory.createPieChart(
"Ejemplo Rapido de Grafico en un ChartFrame",
data,
true,
true,
false);
// Mostrar Grafico
ChartFrame frame = new ChartFrame("JFreeChart", chart);
frame.pack();
frame.setVisible(true);
}
}
Que al ejecutarlo nos muestra esto 😀

Ahora vamos a analizar el codigo basico necesario para mostrar un grafico con JFree Chart, tenemos 3 pasos fundamentales..
Todos los Graficos necesitan leer la Informacion de un lugar para dibujarse. ( incluso una base de datos 😉 )
Aqui llamaremos a la clase ChartFactory que se encargara de crear el grafico por ti 😀
Aqui puede variar como lo muestras, ya sea en su ChartFrame, ChartPanel..
Para mostrar la misma grafica pero en ahora en un Panel propio en lugar de un ChartFrame el codigo seria
public class Ventana extends JFrame{
JPanel panel;
public Ventana(){
setTitle("Como Hacer Graficos con Java");
setSize(800,600);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
init();
}
private void init() {
panel = new JPanel();
getContentPane().add(panel);
// Fuente de Datos
DefaultPieDataset data = new DefaultPieDataset();
data.setValue("C", 40);
data.setValue("Java", 45);
data.setValue("Python", 15);
// Creando el Grafico
JFreeChart chart = ChartFactory.createPieChart(
"Ejemplo Rapido de Grafico en un ChartFrame",
data,
true,
true,
false);
// Crear el Panel del Grafico con ChartPanel
ChartPanel chartPanel = new ChartPanel(chart);
panel.add(chartPanel);
}
public static void main(String args[]){
new Ventana().setVisible(true);
}
}
y el resultado es el mismo 😉 ahora veamos que otros tipos de graficos podemos hacer con JFreeChart 😀
Tipos, Sabores, Colores, Planos y en 3D..
Vamos a crearnos un grafico de barras 3d de colores y lo pondremos en un JPanel, veamos al codigo
public class Ventana extends JFrame{
JPanel panel;
public Ventana(){
setTitle("Como Hacer Graficos con Java");
setSize(800,600);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
init();
}
private void init() {
panel = new JPanel();
getContentPane().add(panel);
// Fuente de Datos
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.setValue(8, "Mujeres", "Lunes");
dataset.setValue(7, "Hombres", "Lunes");
dataset.setValue(9, "Mujeres", "Martes");
dataset.setValue(4, "Hombres", "Martes");
dataset.setValue(4, "Mujeres", "Miercoles");
dataset.setValue(5, "Hombres", "Miercoles");
dataset.setValue(8, "Mujeres", "Jueves");
dataset.setValue(9, "Hombres", "Jueves");
dataset.setValue(7, "Mujeres", "Viernes");
dataset.setValue(8, "Hombres", "Viernes");
// Creando el Grafico
JFreeChart chart = ChartFactory.createBarChart3D
("Participacion por Genero","Genero", "Dias",
dataset, PlotOrientation.VERTICAL, true,true, false);
chart.setBackgroundPaint(Color.cyan);
chart.getTitle().setPaint(Color.black);
CategoryPlot p = chart.getCategoryPlot();
p.setRangeGridlinePaint(Color.red);
// Mostrar Grafico
ChartPanel chartPanel = new ChartPanel(chart);
panel.add(chartPanel);
}
public static void main(String args[]){
new Ventana().setVisible(true);
}
}
y lucira asi 😀

Ahora crearemos un Grafico de Pastel en 3d en un Panel, veamos el codigo..
public class Ventana extends JFrame{
JPanel panel;
public Ventana(){
setTitle("Como Hacer Graficos con Java");
setSize(800,600);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
init();
}
private void init() {
panel = new JPanel();
getContentPane().add(panel);
// Fuente de Datos
DefaultPieDataset defaultpiedataset = new DefaultPieDataset();
defaultpiedataset.setValue("Programacion", new Double(41.200000000000003D));
defaultpiedataset.setValue("Electronica", new Double(11D));
defaultpiedataset.setValue("Hacking", new Double(19.5D));
defaultpiedataset.setValue("SEO", new Double(30.5D));
defaultpiedataset.setValue("Redes", new Double(2.0D));
// Creando el Grafico
JFreeChart chart = ChartFactory.createPieChart3D("Tematicas Blog", defaultpiedataset, true, true, false);
PiePlot3D pieplot3d = (PiePlot3D)chart.getPlot();
pieplot3d.setDepthFactor(0.5);
pieplot3d.setStartAngle(290D);
pieplot3d.setDirection(Rotation.CLOCKWISE);
pieplot3d.setForegroundAlpha(0.5F);
// Mostrar Grafico
ChartPanel chartPanel = new ChartPanel(chart);
panel.add(chartPanel);
}
public static void main(String args[]){
new Ventana().setVisible(true);
}
}
y el resultado sera el siguiente

Para realizar un Grafico de Lineas puedes ver el Siguiente Codigo..
public class Ventana extends JFrame{
JPanel panel;
public Ventana(){
setTitle("Como Hacer Graficos con Java");
setSize(800,600);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
init();
}
private void init() {
panel = new JPanel();
getContentPane().add(panel);
// Fuente de Datos
DefaultCategoryDataset line_chart_dataset = new DefaultCategoryDataset();
line_chart_dataset.addValue(80, "visitas", "Julio");
line_chart_dataset.addValue(300, "visitas", "Agosto");
line_chart_dataset.addValue(600, "visitas", "Septiembre");
line_chart_dataset.addValue(1200, "visitas", "Octubre");
line_chart_dataset.addValue(2400, "visitas", "Noviembre");
// Creando el Grafico
JFreeChart chart=ChartFactory.createLineChart("Trafico en el Blog",
"Mes","Visitas",line_chart_dataset,PlotOrientation.VERTICAL,
true,true,false);
// Mostrar Grafico
ChartPanel chartPanel = new ChartPanel(chart);
panel.add(chartPanel);
}
public static void main(String args[]){
new Ventana().setVisible(true);
}
}
y al ejecutar veras..

y Bueno.. si viste la pagina de samples de la pagina de JFreeChart sabras que puedes hacer decenas de Graficos y por supuesto que no pondre todos 😉 de hecho ya me canse de poner ejemplos y hasta aqui le daremos 😀 puedes darte una vuelta por la Pagina de JFreeChart para ver mas tipos.
Guardando los Graficos a Disco
Algo muy util es poder guardar los graficos a tu disco duro sea por la razon que sea, aqui te mostramos como 😉
ChartUtilities.saveChartAsJPEG(new File("grafico.jpg"), chart, 500, 500);
[note]grafico.jpg -> Nombre del Archivochart -> Objeto que contiene el Grafico
500,500 -> Dimension de la Imagen
[/note]