Se o intuito for gerar gráficos em PDF, a alternativa JFreeChart x JasperReports seria a ideal.
Agora, se a principio deseja-se gerar gráficos na própria página web (JSP), utilizando ferramentas FREE, as alternativas aconselháveis seriam (1) JFreeChart x Cewolf e (2) JFreeChart x Servlet.
O Cewolf é simples e prático mas é limitado com base em gráficos a serem gerados (aproximadamente 20 tipos de gráficos). Além de possuir uma documentação ridícula. P/ fazer algo funcionar, tem que verificar exemplos disponibilizados pelo mesmo. De certa forma, para gráficos requisitados (pie e bar) tem disponível na biblioteca.
Exemplo.:
Pie3D <cewolf:chart id="pie3D" title="Market Share - Outubro/2007" type="pie3D">
<cewolf:data>
<cewolf:producer id="pie3DDataProducer" />
</cewolf:data>
</cewolf:chart>
<cewolf:img chartid="pie3D" renderer="/cewolf" width="500" height="400">
<cewolf:map tooltipgeneratorid="pieToolTipGenerator"/>
</cewolf:img>
VerticalBar3D <cewolf:chart id="verticalBar3D" title="Evolução de Mercado (Comparativo)" type="verticalBar3D" xaxislabel="Período" yaxislabel="Volume de Vendas">
<cewolf:data>
<cewolf:producer id="verticalBar3DDataProducer" />
</cewolf:data>
</cewolf:chart>
<cewolf:img chartid="verticalBar3D" renderer="/cewolf" width="400" height="400"/>
Já na solução adotando JFreeChart x Servlet, você terá o benefício de gerar diversos tipos de gráficos usando todos os recursos do JFreeChart. Vai dar um pouco mais de trabalho, mas se a diversidade de gráficos a serem gerados forem relativamente grandes esta seria uma solução boa.
Exemplo:
ServletOutputStream out = response.getOutputStream();
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");
JFreeChart chart = ChartFactory.createBarChart
("Bar Chart", "Category", "Value", dataset, PlotOrientation.VERTICAL, true, true, false);
response.setContentType("image/png");
ChartUtilities.writeChartAsPNG(out, chart, 400, 300);
out.close();
JSP<img src="/showBarChart" width="400">
Espero ter ajudado!
--
[]'s
**********************************************
Márcio Paulino
Campo Grande - MS
MSN / Gtalk:
mcopa...@gmail.comICQ: 155897898
**********************************************