P. 1
Curso de Graficos Con Java

Curso de Graficos Con Java

|Views: 7,794|Likes:
Published by Cedric Simon
Crea gráficos con Java, Flash, y JFreechart. Escrito en español.

PDF actualizado disponible en http://solucionjava.com/manuales_gratis.php
Crea gráficos con Java, Flash, y JFreechart. Escrito en español.

PDF actualizado disponible en http://solucionjava.com/manuales_gratis.php

More info:

Published by: Cedric Simon on Sep 07, 2009
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

01/05/2014

pdf

text

original

Curso de

gráficos con Java
y OpenFlashChart
para aplicaciones web
Manual del alumno
Docente: Cédric Simon Versión 1.0

S
o
l
u
c
i
o
n
J
a
v
a
.
c
o
m


I
n
g
.

C
e
d
r
i
c

S
i
m
o
n



T
e
l
:

2
2

!

0
"
#
$



C
e
l
:

!
!
!
!

2
%
!
#



&
m
a
i
l
:


c
e
d
r
i
c
'
s
o
l
u
c
i
o
n
(
a
v
a
.
c
o
m



)
e
*
:

+
+
+
.
s
o
l
u
c
i
o
n
(
a
v
a
.
c
o
m
Curso de gr,-icos con Java .ara a.licaciones +e* /agina 2 0 1
Índice de contenido
1.Introducción al curso..........................................................................................................................%
1.1.1*(etivo de este curso................................................................................................................%
1.2.2anual del alumno.....................................................................................................................%
1.%.&(ercicios .r,cticos.....................................................................................................................%
1.$.3e4uisitos .ara atender a este curso.........................................................................................%
1.5.So.orte des.ués del curso.........................................................................................................%
2.Introducción.......................................................................................................................................$
2.1.6r,-icos con 1.en7las8C8art....................................................................................................$
2.2.6r,-icos con Java.......................................................................................................................$
%.1.en7las8C8art................................................................................................................................5
%.1.Instalación..................................................................................................................................5
%.2./rimer gr,-ico.............................................................................................................................5
%.%.1tros gr,-icos.............................................................................................................................
$.J7reeC8art.........................................................................................................................................#
$.1.Instalación..................................................................................................................................#
$.2./rimer gr,-ico.............................................................................................................................#
$.%.Ti.os de gr,-icos 9 ti.os de arreglos de datos...........................................................................!
a:/ie c8art........................................................................................................................................!
*:;ar c8art......................................................................................................................................."
c:<ine c8art.....................................................................................................................................11
d:TimeSerie c8art...........................................................................................................................12
e:1tros gr,-icos..............................................................................................................................1%
$.$.Cone=ión con la *ase de datos................................................................................................1%
$.5.7ormateo -ino del gr,-ico..........................................................................................................15
> Co.9rig8t Cédric Simon? 2005@200" Versión 1.0 /agina 2 0 1
Curso de gr,-icos con Java .ara a.licaciones +e* /agina % 0 1
1. Introduccin al curso
1.1. Objetivo de este curso
&n este curso vamos a a.render a crear gr,-icos .ara a.licaciones +e* JS/.
1.2. Manual del alumno
&ste manual del alumno es una a9uda .ara el alumno? .ara tenga un recuerdo del curso. &ste manual
contiene un resumen de las materias 4ue se van a estudiar durante el curso? .ero el alumno de*erAa
de tomar notas .ersonales .ara com.letas este manual.
1.3. Ejercicios prácticos
/ara ca.tar me(or la teorAa? se 8ar,n muc8os e(ercicios con los alumnos? .ara .ro*ar la teorAa 9
veri-icar la integración de la materia.

Tam*ién? el alumno .odr, co.iar sus códigos en una memoria -las8 al -in del curso .ara llevarse? con
-in de seguir la .r,ctica en su 8ogar.
1.4. Requisitos para atender a este curso
&l conocimiento de los lengua(e BT2<? Java? 9 Javascri.t es re4uerido .ara .oder atender a este
curso.
Si el alumno tiene di-icultades en un u otro ca.itulo? el de*e sentirse li*re de .edir e=.licaciones
adicionales al .ro-esor.
/ero si a.arece 4ue el alumno no .osee los re4uisitos mAnimos .ara este curso? .or res.eto a los
otros alumnos 4ue 9a .oseen esta materia? el alumno .odrAa ser traslado .ara otro curso en el -uturo?
cuando el cum.lir, con los re4uisitos.
1.5. Soporte despus del curso
Si tienes .reguntas so*re la materia del curso en tus e(ercicios .r,cticos? .uedes escri*ir tus
.reguntas a cedric'solucion(ava.com .
/ara in-ormaciones so*re otros cursos? visita el sitio +e* +++.solucion(ava.com.
> Co.9rig8t Cédric Simon? 2005@200" Versión 1.0 /agina % 0 1
Curso de gr,-icos con Java .ara a.licaciones +e* /agina $ 0 1
!. Introduccin
2.1. !rá"icos con Open#las$%$art
1.en7las8C8art es una li*rerAa 7las8 4ue .ermite crear gr,-icos en 7las8 usando Javascri.t .ara
mane(ar el gr,-icos? 9 entonces sin escri*ir nada en 7las8.
1.en7las8Cart .ermite crear gr,-icos m,s atractivos 4ue J7reeC8art? .ero tiene menos ti.os de
gr,-icos dis.oni*les? 9 no es un o*(eto Java? si no 4ue se 8a creado una acción .ersonaliCada .ara
.oder crear -,cilmente los gr,-icos desde una .,gina JS/. 1.en7las8C8art solo est, dis.oni*le .ara
clientes +e*.
2.2. !rá"icos con &ava
&=isten varios .a4uetes 4ue .ermiten crear gr,-icos con Java. <a m,s conocida? 9 .ro*a*lemente la
m,s com.leta es el .a4uete J7reeC8art? 4ue se .uede usar solo o em.a4uetado en otros .a4uetes
como Jas.er3e.ort.
J7reeC8art es un so-t+are li*re? *a(o licencia 6/<? 9 se .uede descargar desde
8tt.:00+++.(-ree.org0(-reec8art0 .
J7reeC8art .ermite crear todos ti.os de gr,-icos? 9a sea ,rea? *arra? e(es?lineales? linea de tiem.o?
etc...
<as clases de J7reeC8art crean o*(etos 6ra.8ic2D 4ue se .ueden en a.licaciones de escritorio? o
e=.ortar a im,genes o /D7 .ara incluirlos en a.licaciones +e*? sin necesidad de .lugin es.ecial.
> Co.9rig8t Cédric Simon? 2005@200" Versión 1.0 /agina $ 0 1
Curso de gr,-icos con Java .ara a.licaciones +e* /agina 5 0 1
". OpenFlashChart
3.1. 'nstalaci(n
/ara .oder usar J7reeC8art necesitamos :
1. &l arc8ivo S(7rame+orD.(ar
2. Ena su*car.eta llamada Fc8artF de*a(o de F)e*ContentF Go raiC del sitio: con los arc8ivos o.en@
-las8@c8art.s+- 9 s+-o*(ect.(s? 9 o.cionalmente el arc8ivo -las8Hdetect.(s
%. En navegador con el .lugin de 2acromedia 7las8 instalado .ara .oder ver los gr,-icos
$. <a *ase de datos dis.oni*le como -uente de datos.
1.en7las8C8art no necesita Java .ara -uncionar. /ero vamos a ver en este curso como usar la
li*rerAa de acción .ersonaliCada Tag<i* diseIada .or SolucionJava.com 9 li*erada *a(o licencia 6/<?
4ue nos .ermite crear gr,-icos *asados en una consulta a una *ase de datos.
3.2. )rimer *rá"ico
/ara crear gr,-icos en 1.en7las8C8art con la li*rerAa de SolucionJava.com? es mu9 -,cil: usa el
tagli*? menciona los .ar,metros 4ue 4uieres .ara .ersonaliCar el gr,-ico? 9 .one el SJ< .ara traer los
datos.
Se guardo el nom*re de varia*le original de 1.en7las8C8art G4ue no res.eta las reglas de
nom*ramiento de Java: .ara .oder -,cilmente ligar el Java con el Javascri.t.
/ara in-o so*re los .ar,metros dis.oni*les? ver la documentación del K/I de 1.en7las8C8artTag? 9
.ara su signi-icado? ver la documentación en el el sitio +e* o-icial de 1.en7las8C8art
G8tt.:00teet8grinder.co.uD0o.en@-las8@c8art0:.
&(em.lo:
<%@ taglib uri="/WEB-INF/lib/SjFramework.jar" prefix="sj" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Primer gr&aacute;fico</title>
<script type="text/javascript" src="chart/swfobject.js"></script>
</head>
<body>
<script type="text/javascript" src="chart/flash_detect.js"></script>
<h1>Primer gr&aacute;fico</h1>
<sj:OpenFlashChart
width="400"
height="200"
title="Simple Line chart example"
title_style="font-size:26px"
occurence="1"
line_hollow_colour="#bdf"
line_hollow_dot_size="5"
line_hollow_text="Matagalpa"
line_hollow_font_size="12"
line_hollow_width="2"
dbObjectName="bd.LeerDB"
>
select tm.value_es,
total_ventas ,
date_format(fecha,'%m')
> Co.9rig8t Cédric Simon? 2005@200" Versión 1.0 /agina 5 0 1
Curso de gr,-icos con Java .ara a.licaciones +e* /agina 0 1
from
ventas tt
join months tm on (date_format(fecha,'%m')=tm.orden)
where tt.fecha between '2007-01-01' and '2007-06-30'
and no_site= 4
order by 3
</sj:OpenFlashChart>
</body>
</html>
3.3. Otros *rá"icos
/ara o*tener otros gr,-ico? solo modi-ica los .arametros de la eti4ueta Ls(:1.en7las8C8artM.
Cuando 8a9 varios gru.os de valores? se menciona el nNmero de gru.os de datos con el .ar,metro
Onum*er1-DataSetsP? 9 el valor del identi-icador de cada gru.o Gcuarto cam.o de la consulta: con
OsetQValueP donde Q re.resenta el numero del gru.o. <uego de-ine el color 9 el te=to de cada gru.o.
&(em.lo:
<%@ taglib uri="/WEB-INF/lib/SjFramework.jar" prefix="sj" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Gr&aacute;fico de varios grupos de datos</title>
<script type="text/javascript" src="chart/swfobject.js"></script>
</head>
<body>
<script type="text/javascript" src="chart/flash_detect.js"></script>
<h1>Gr&aacute;fico de varios grupos de datos</h1>
<sj:OpenFlashChart
width="400"
height="200"
title="Multiple lines chart example"
title_style="font-size:26px"
numberOfDataSets="4"
set1Value="1" set2Value="2" set3Value="3" set4Value="4"
occurence="3" line_hollow_colour="#3333ad" line_hollow_dot_size="5" line_hollow_text="Managua"
line_hollow_font_size="12" line_hollow_width="2"
line_circles="15" line_size="12" line_width="2" line2_colour="#af2566" line2_text="Leon"
line_dot_dot_size="5" line_dot_font_size="12" line_dot_width="2" line3_dot_colour="#777777"
line3_dot_text="Masaya"
line4_hollow_colour="#bdf" line4_hollow_text="Matagalpa"
dbObjectName="bd.LeerDB"
>
select tm.value_es,
total_ventas ,
date_format(fecha,'%m'),
no_site
from ventas tt
join months tm on (date_format(fecha,'%m')=tm.orden)
where tt.fecha between '2007-01-01' and '2007-06-30'
order by 3 ,4
</sj:OpenFlashChart>
</body>
</html>
> Co.9rig8t Cédric Simon? 2005@200" Versión 1.0 /agina 0 1
Curso de gr,-icos con Java .ara a.licaciones +e* /agina # 0 1
#. JFreeChart
4.1. 'nstalaci(n
/ara .oder usar J7reeC8art necesitamos las li*rerAas (-reec8art@1.0.1%.(ar? (common@1.0.1.(ar? 9
iTe=t@2.1.5.(ar incluidas en el class.at8 Gles .odemos co.iar de*a(o )&;@IR70li*:.
4.2. )rimer *rá"ico
Vamos a crear un .rimer gr,-ico en un servlet? 9 una .,gina BT2< .ara mostrarlo.
/rimero tenemos 4ue crear el arreglo de valores Gdataset:? luego creamos el gr,-ico? 9 lo enviamos
.or la salida.
&(em.lo:
package demo;
import java.io.IOException;
import java.io.OutputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
public class ServletDemo1 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
OutputStream out = response.getOutputStream();
try {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(10.0, "S1", "C1");
dataset.addValue(4.0, "S1", "C2");
dataset.addValue(15.0, "S1", "C3");
dataset.addValue(14.0, "S1", "C4");
dataset.addValue(-5.0, "S2", "C1");
dataset.addValue(-7.0, "S2", "C2");
dataset.addValue(14.0, "S2", "C3");
dataset.addValue(-3.0, "S2", "C4");
dataset.addValue(6.0, "S3", "C1");
dataset.addValue(17.0, "S3", "C2");
dataset.addValue(-12.0, "S3", "C3");
dataset.addValue(7.0, "S3", "C4");
dataset.addValue(7.0, "S4", "C1");
dataset.addValue(15.0, "S4", "C2");
dataset.addValue(11.0, "S4", "C3");
dataset.addValue(0.0, "S4", "C4");
dataset.addValue(-8.0, "S5", "C1");
dataset.addValue(-6.0, "S5", "C2");
dataset.addValue(10.0, "S5", "C3");
dataset.addValue(-9.0, "S5", "C4");
dataset.addValue(9.0, "S6", "C1");
dataset.addValue(8.0, "S6", "C2");
dataset.addValue(null, "S6", "C3");
dataset.addValue(6.0, "S6", "C4");
> Co.9rig8t Cédric Simon? 2005@200" Versión 1.0 /agina # 0 1
Curso de gr,-icos con Java .ara a.licaciones +e* /agina ! 0 1
dataset.addValue(-10.0, "S7", "C1");
dataset.addValue(9.0, "S7", "C2");
dataset.addValue(7.0, "S7", "C3");
dataset.addValue(7.0, "S7", "C4");
dataset.addValue(11.0, "S8", "C1");
dataset.addValue(13.0, "S8", "C2");
dataset.addValue(9.0, "S8", "C3");
dataset.addValue(9.0, "S8", "C4");
dataset.addValue(-3.0, "S9", "C1");
dataset.addValue(7.0, "S9", "C2");
dataset.addValue(11.0, "S9", "C3");
dataset.addValue(-10.0, "S9", "C4");
JFreeChart chart = ChartFactory.createBarChart(
"Bar Chart",
"Category",
"Value",
dataset,
PlotOrientation.VERTICAL,
true, true, false
);
response.setContentType("image/png");
ChartUtilities.writeChartAsPNG(out, chart, 400, 300);
}
catch (Exception e) {
System.err.println(e.toString());
}
finally { out.close();
}
}
}
(-demo1.(s.:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Primer grafico JFreeChart</title>
</head>
<body>
<h1>Primer grafico JFreeChart</h1>
<hr>
<img alt="Primer grafico JFreeChart" src="ServletDemo1">
</body>
</html>
4.3. +ipos de *rá"icos , tipos de arre*los de datos
K cada ti.o de gr,-ico corres.onde un ti.o de arreglo de datos.
<os .rinci.ales ti.os de gr,-icos son: /ie? ;ar? <ine? 9 TimeSerie.
a- )ie c$art
Crear un arreglo de datos de ti.o /ieDataset 9 luego crear el gr,-ico.
Servlet /ieDemo1:
package demo;
> Co.9rig8t Cédric Simon? 2005@200" Versión 1.0 /agina ! 0 1
Curso de gr,-icos con Java .ara a.licaciones +e* /agina " 0 1
import java.io.IOException;
import java.io.OutputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;
public class PieDemo1 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,
IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
OutputStream out = response.getOutputStream();
try {
JFreeChart chart = null;
chart = createPieChart();
if (chart != null) {
response.setContentType("image/png");
ChartUtilities.writeChartAsPNG(out, chart, 400, 300);
}
}
catch (Exception e) {
System.err.println(e.toString());
}
finally {out.close();
}
}
private JFreeChart createPieChart() {
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));
JFreeChart chart = ChartFactory.createPieChart(
"Pie Chart Demo 1", // chart title
data, // data
true, // include legend
true, // tooltips
false // urls
);
return chart;
}
}
b- .ar c$art
Crear un arreglo de datos de ti.o De-aultCategor9Dataset 9 luego crear el gr,-ico.
Servlet ;arDemo1:
package demo;
import java.io.IOException;
import java.io.OutputStream;
> Co.9rig8t Cédric Simon? 2005@200" Versión 1.0 /agina " 0 1
Curso de gr,-icos con Java .ara a.licaciones +e* /agina 10 0 1
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
public class BarDemo1 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
OutputStream out = response.getOutputStream();
try {
JFreeChart chart = null;
chart = createBarChart();
if (chart != null) {
response.setContentType("image/png");
ChartUtilities.writeChartAsPNG(out, chart, 400, 300);
}
}
catch (Exception e) {
System.err.println(e.toString());
}
finally {out.close();
}
}
private JFreeChart createBarChart() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(10.0, "S1", "C1");
dataset.addValue(4.0, "S1", "C2");
dataset.addValue(15.0, "S1", "C3");
dataset.addValue(14.0, "S1", "C4");
dataset.addValue(-5.0, "S2", "C1");
dataset.addValue(-7.0, "S2", "C2");
dataset.addValue(14.0, "S2", "C3");
dataset.addValue(-3.0, "S2", "C4");
dataset.addValue(6.0, "S3", "C1");
dataset.addValue(17.0, "S3", "C2");
dataset.addValue(-12.0, "S3", "C3");
dataset.addValue(7.0, "S3", "C4");
dataset.addValue(7.0, "S4", "C1");
dataset.addValue(15.0, "S4", "C2");
dataset.addValue(11.0, "S4", "C3");
dataset.addValue(0.0, "S4", "C4");
dataset.addValue(-8.0, "S5", "C1");
dataset.addValue(-6.0, "S5", "C2");
dataset.addValue(10.0, "S5", "C3");
dataset.addValue(-9.0, "S5", "C4");
dataset.addValue(9.0, "S6", "C1");
dataset.addValue(8.0, "S6", "C2");
dataset.addValue(null, "S6", "C3");
dataset.addValue(6.0, "S6", "C4");
dataset.addValue(-10.0, "S7", "C1");
dataset.addValue(9.0, "S7", "C2");
dataset.addValue(7.0, "S7", "C3");
dataset.addValue(7.0, "S7", "C4");
dataset.addValue(11.0, "S8", "C1");
dataset.addValue(13.0, "S8", "C2");
> Co.9rig8t Cédric Simon? 2005@200" Versión 1.0 /agina 10 0 1
Curso de gr,-icos con Java .ara a.licaciones +e* /agina 11 0 1
dataset.addValue(9.0, "S8", "C3");
dataset.addValue(9.0, "S8", "C4");
dataset.addValue(-3.0, "S9", "C1");
dataset.addValue(7.0, "S9", "C2");
dataset.addValue(11.0, "S9", "C3");
dataset.addValue(-10.0, "S9", "C4");
JFreeChart chart = ChartFactory.createBarChart3D(
"Bar Chart Demo 1", // chart title
"Category", // domain axis label
"Value", // range axis label
dataset, // data
PlotOrientation.VERTICAL, // orientation
true, // include legend
true, // tooltips?
false // URLs?
);
return chart;
}
}
c- /ine c$art
Crear un arreglo de datos de ti.o De-aultCategor9Dataset 9 luego crear el gr,-ico.
Servlet <ineDemo1:
package demo;
import java.io.IOException;
import java.io.OutputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
public class LineDemo1 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
OutputStream out = response.getOutputStream();
try {
JFreeChart chart = null;
chart = createLineChart();
if (chart != null) {
response.setContentType("image/png");
ChartUtilities.writeChartAsPNG(out, chart, 600, 300);
}
}
catch (Exception e) {
System.err.println(e.toString());
}
finally {out.close();
}
}
private JFreeChart createLineChart() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(212, "Classes", "JDK 1.0");
> Co.9rig8t Cédric Simon? 2005@200" Versión 1.0 /agina 11 0 1
Curso de gr,-icos con Java .ara a.licaciones +e* /agina 12 0 1
dataset.addValue(504, "Classes", "JDK 1.1");
dataset.addValue(1520, "Classes", "JDK 1.2");
dataset.addValue(1842, "Classes", "JDK 1.3");
dataset.addValue(2991, "Classes", "JDK 1.4");
dataset.addValue(3500, "Classes", "JDK 1.5");
JFreeChart chart = ChartFactory.createLineChart(
"Java Standard Class Library", // chart title
null, // domain axis label
"Class Count", // range axis label
dataset, // data
PlotOrientation.VERTICAL, // orientation
false, // include legend
true, // tooltips
false // urls
);
return chart;
}
}
d- +imeSerie c$art
Crear un arreglo de datos de ti.o QSDataset 9 luego crear el gr,-ico.
Servlet TimeSerieDemo1:
package demo;
import java.io.IOException;
import java.io.OutputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.data.time.Day;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.xy.XYDataset;
import org.jfree.date.MonthConstants;
public class TimeSerieDemo1 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,
IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
OutputStream out = response.getOutputStream();
try {
JFreeChart chart = null;
chart = createTimeSeriesChart();
if (chart != null) {
response.setContentType("image/png");
ChartUtilities.writeChartAsPNG(out, chart, 400, 300);
}
}
catch (Exception e) {
System.err.println(e.toString());
}
finally {out.close();
}
}
> Co.9rig8t Cédric Simon? 2005@200" Versión 1.0 /agina 12 0 1
Curso de gr,-icos con Java .ara a.licaciones +e* /agina 1% 0 1
private JFreeChart createTimeSeriesChart() {
// here we just populate a series with random data...
TimeSeries series = new TimeSeries("Random Data");
Day current = new Day(1, MonthConstants.JANUARY, 2009);
for (int i = 0; i < 100; i++) {
series.add(current, Math.random() * 100);
current = (Day) current.next();
}
XYDataset data = new TimeSeriesCollection(series);
JFreeChart chart = ChartFactory.createTimeSeriesChart(
"Time Series Chart", // title
"Date", // x-axis label
"Rate", // y-axis label
data, // data
true, // create legend?
true, // generate tooltips?
false // generate URLs?
);
return chart;
}
}
e- Otros *rá"icos
Como .udieron ver? es siem.re casi el mismo código:
1: crear un arreglo de datos
2: crear el gr,-ico
/ara los otros ti.os de gr,-icos? ver la documentación K/I de J-reeC8art.
4.4. %one0i(n con la base de datos
/ara traer los datos de la *ase de datos? 8a9 dos .osi*ilidades: llenar el arreglo de datos con una
*ucle so*re el arreglo de resultados? o usar un arreglo de datos JD;C.
Cada arreglo de datos tiene su .endiente JD;C.
/ieDataset T JD;C/ieDataset
QSDataset T JD;CQSDataset
De-aultDataset T JD;CDe-aultDataset
etc...
&l uso del JD;C dataset es mu9 sencillo: crear una cone=ión? .asarla al dataset? e(ecutar la consulta?
9 cerrar la cone=ión.
con = DriverManager.getConnection(url, "jfreechart", "password");
data = new JDBCPieDataset(con);
String sql = "SELECT * FROM PIEDATA1;";
data.executeQuery(sql);
con.close();
Si usamos el marco de tar*a(o de SolJava:
LeerDB leerDB = new LeerDB();
data = new JDBCPieDataset(leerDB.getCon());
> Co.9rig8t Cédric Simon? 2005@200" Versión 1.0 /agina 1% 0 1
Curso de gr,-icos con Java .ara a.licaciones +e* /agina 1$ 0 1
String sql = "SELECT * FROM PIEDATA1;";
data.executeQuery(sql);
leerDB.cleanup();
Servlet PieDemo2:
package demo;
import java.io.IOException;
import java.io.OutputStream;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.data.jdbc.JDBCPieDataset;
import bd.LeerDB;
public class PieDemo2 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
OutputStream out = response.getOutputStream();
try {
JFreeChart chart = null;
chart = createPieChart();
if (chart != null) {
response.setContentType("image/png");
ChartUtilities.writeChartAsPNG(out, chart, 400, 300);
}
}
catch (Exception e) {
System.err.println(e.toString());
}
finally {out.close();
}
}
private JFreeChart createPieChart() {
JDBCPieDataset data=null;
try {
LeerDB leerDB = new LeerDB();
data = new JDBCPieDataset(leerDB.getCon());
String sql = "select"+
" tm.value_es,"+
" total_ventas"+
" from "+
" ventas tt "+
" join months tm on (date_format(fecha,'%m')=tm.orden)"+
" where tt.fecha between '2007-01-01' and '2007-06-30'"+
" and no_site= 4";
data.executeQuery(sql);
leerDB.cleanup();
} catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
JFreeChart chart = ChartFactory.createPieChart(
> Co.9rig8t Cédric Simon? 2005@200" Versión 1.0 /agina 1$ 0 1
Curso de gr,-icos con Java .ara a.licaciones +e* /agina 15 0 1
"Pie Chart Demo 1", // chart title
data, // data
true, // include legend
true, // tooltips
false // urls
);
return chart;
}
}
4.5. #ormateo "ino del *rá"ico
<os gr,-icos de J-reeC8art se .ueden -ormatear de manera mu9 -ina.
Casi todos los elementos del gr,-ico se .ueden .ersonaliCar? 9a sea el tAtulo? los e(es? el -ondo? las
eti4uetas? etc...
&=isten 8asta la .osi*ilidad de crear gr,-icos interactivos.
Como las o.ciones de -ormateo -ino son inmensas? re-erirse a la documentación en lAnea .ara
descu*rir todas las .osi*ilidades.
Servlet ;arDemo2:
package demo;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.GradientPaint;
import java.io.IOException;
import java.io.OutputStream;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.jdbc.JDBCCategoryDataset;
import org.jfree.ui.RectangleInsets;
import bd.LeerDB;
public class BarDemo2 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
doPost(request, response); }
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
OutputStream out = response.getOutputStream();
try {
JFreeChart chart = null;
chart = createBarChart();
if (chart != null) {
response.setContentType("image/png");
ChartUtilities.writeChartAsPNG(out, chart, 400, 300);
}
}
catch (Exception e) {
> Co.9rig8t Cédric Simon? 2005@200" Versión 1.0 /agina 15 0 1
Curso de gr,-icos con Java .ara a.licaciones +e* /agina 1 0 1
System.err.println(e.toString());
}
finally {out.close();
}
}
private JFreeChart createBarChart() {
JDBCCategoryDataset data=null;
try {
LeerDB leerDB = new LeerDB();
data = new JDBCCategoryDataset(leerDB.getCon());
String sql = "select"+" tm.value_es,"+" total_ventas"+
" from "+" ventas tt "+
" join months tm on (date_format(fecha,'%m')=tm.orden)"+
" where tt.fecha between '2007-01-01' and '2007-06-30'"+
" and no_site= 4";
data.executeQuery(sql);
leerDB.cleanup();
} catch (SQLException e) {e.printStackTrace();
} catch (Exception e) {e.printStackTrace();}
JFreeChart chart = ChartFactory.createBarChart(
"Bar Chart Demo 2", // chart title
null, // domain axis label
"Valor", // range axis label
data, // data
PlotOrientation.VERTICAL, // orientation
true, // include legend
true, // tooltips?
false // URLs?
);
TextTitle title = chart.getTitle();
title.setBorder(0, 0, 1, 0);
title.setBackgroundPaint(new GradientPaint(0f, 0f, Color.red, 350f,
0f, Color.white, true));
title.setExpandToFitSpace(true);
chart.setBackgroundPaint(new GradientPaint(0f, 0f, Color.yellow, 350f,
0f, Color.white, true));
// get a reference to the plot for further customisation...
CategoryPlot plot = (CategoryPlot) chart.getPlot();
plot.setNoDataMessage("NO DATA!");
plot.setBackgroundPaint(null);
plot.setInsets(new RectangleInsets(10, 5, 5, 5));
plot.setOutlinePaint(Color.black);
plot.setRangeGridlinePaint(Color.gray);
plot.setRangeGridlineStroke(new BasicStroke(1.0f));
// change the margin at the top of the range axis...
NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
rangeAxis.setRange(0.0, 30.0);
rangeAxis.setTickMarkPaint(Color.black);

return chart;
}
}
> Co.9rig8t Cédric Simon? 2005@200" Versión 1.0 /agina 1 0 1

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->