Pessoal,
estou com um problema com o JFreeChart.
Tenho uma aplicação web, então gero os gráficos como imagens e as mando para o JasperReports para o gráfico aparecer no relatório.
Estava usando a JFreeChart1.0.0 e estava funcionando OK. Me pediram que mudasse a cor de um dos setores da pizza. Após muito batalhar encontrei como fazer isso, porém na execução lançava uma exceção. Tentei então usar o JFreeChart 1.0.9. Não lança mais a exceção, mas o meu gráfico aparece tudo preto… não só a pizza, mas o quadrado em volta… tudo… só da pra perceber que estão os títulos e legendas escritos por baixo do preto.
Alguém ja passou por isso e pode me sugerir uma solução?
To mandando o código pra se alguém quiser dar uma olhada.
Valew
public static BufferedImage[] geraGrafico (List<?> objetos){
BufferedImage graficoRecInf = null;
BufferedImage graficoOuviu = null;
BufferedImage graficoContato = null;
BufferedImage graficoConhece = null;
try {
DefaultPieDataset pRecInf = new DefaultPieDataset();
DefaultPieDataset pOuviu = new DefaultPieDataset();
DefaultPieDataset pContato = new DefaultPieDataset();
DefaultPieDataset pConhece = new DefaultPieDataset();
int simRecInf = 0;
int simOuviu = 0;
int simContato = 0;
int simConhece = 0;
for (int i = 0; i < objetos.size(); i++){
QuestProspects q = (QuestProspects) objetos.get(i);
if (q.getReceberInformacoes() == 1){
simRecInf++;
}
if (q.getConhece() == 1){
simConhece++;
}
if (q.getContatado() == 1){
simContato++;
}
if (q.getOuviu() == 1){
simOuviu++;
}
}
double pctSim = (double)(100D / objetos.size()) * simRecInf;
pRecInf.setValue("SIM", pctSim);
pRecInf.setValue("NÃO", 100 - pctSim);
JFreeChart chart = ChartFactory.createPieChart3D("", pRecInf, false, false, false);
chart.setTitle(new TextTitle("Grafico 1", new Font(chart.getTitle().getFont().getFontName(), Font.PLAIN, 12)));
graficoRecInf = chart.createBufferedImage(250, 150);
pctSim = (double)(100D / objetos.size()) * simConhece;
pConhece.setValue("SIM", pctSim);
pConhece.setValue("NÃO", 100 - pctSim);
chart = ChartFactory.createPieChart3D("", pConhece, false, false, false);
chart.setTitle(new TextTitle("Grafico 2", new Font(chart.getTitle().getFont().getFontName(), Font.PLAIN, 12)));
graficoConhece = chart.createBufferedImage(250, 150);
pctSim = (double)(100D / objetos.size()) * simContato;
pContato.setValue("SIM", pctSim);
pContato.setValue("NÃO", 100-pctSim);
chart = ChartFactory.createPieChart3D("", pContato, false, false, false);
chart.setTitle(new TextTitle("Grafico 3", new Font(chart.getTitle().getFont().getFontName(), Font.PLAIN, 12)));
graficoContato = chart.createBufferedImage(250, 150);
pctSim = (double)(100D / objetos.size()) * simOuviu;
pOuviu.setValue("SIM", pctSim);
pOuviu.setValue("NÃO", 100-pctSim);
chart = ChartFactory.createPieChart3D("", pOuviu, false, false, false);
chart.setTitle(new TextTitle("Grafico 4", new Font(chart.getTitle().getFont().getFontName(), Font.PLAIN, 12)));
graficoOuviu = chart.createBufferedImage(250, 150);
} catch (Exception e) {
e.printStackTrace();
}
BufferedImage [] retorno = new BufferedImage[4];
retorno[0] = graficoConhece;
retorno[1] = graficoOuviu;
retorno[2] = graficoContato;
retorno[3] = graficoRecInf;
return retorno;
}