[SOLVED] JFreeChart - Alterar a cor da fatia da pizza. Alguém sabe?

1 resposta
A
public class JFreeChartDemo {
	
	public static void main(String[] args) throws FileNotFoundException, IOException {
		Map<String, Integer> mapa = new HashMap<String, Integer>();
		
		mapa.put("Sucesso", 215);
		mapa.put("Falha", 555);
		mapa.put("Erro", 770);

		int totalCTsExecutados = 100;
		
		DefaultPieDataset dadosGrafico = new DefaultPieDataset();
		
		// Popula o gráfico com a massa de dados de resultado
		for (String chave : mapa.keySet()) {
			dadosGrafico.setValue(chave, mapa.get(chave));
		}
		
		JFreeChart montagemGrafico = ChartFactory.createPieChart3D("Total de " + totalCTsExecutados + " casos de teste executados", dadosGrafico, true, true, false);
		
		// Cria o efeito de 3d no gráfico
		montagemGrafico.getPlot().setForegroundAlpha(0.5f);

		// Exibe a porcentagem para cada fatia da pizza
		// {1} = quantidade
		// {2} = porcentagem que a quantidade representa
		// {3} = somatoria de cada quantidade equivalendo o total
		PiePlot parametrizacaoGrafico = (PiePlot) montagemGrafico.getPlot(); 
		parametrizacaoGrafico.setLabelGenerator(new StandardPieSectionLabelGenerator("Quantidade - {1} \n Porcentagem - {2}"));
		parametrizacaoGrafico.setNoDataMessage("Não há valores de resultado para exibição.");  
		
		// Color é filho de Paint
		// Cor do fundo do label
		parametrizacaoGrafico.setLabelBackgroundPaint(Color.white);
		
		// Cor do fundo do gráfico
		parametrizacaoGrafico.setBackgroundPaint(Color.white);		
		
		// Cor da borda do gráfico
		parametrizacaoGrafico.setBaseSectionOutlinePaint(Color.yellow);
		
		// Rotação da pizza no sentido horário
		parametrizacaoGrafico.setDirection(Rotation.CLOCKWISE);
		
		parametrizacaoGrafico.setLabelShadowPaint(Color.yellow);
			
		// Gera o gráfico própriamente
		ChartUtilities.writeChartAsPNG(new FileOutputStream("c:\\teste.png"), montagemGrafico, 1000, 400, null, false, 0);
	}
	
}

1 Resposta

A

Código c/ solução:

PiePlot mudancaCorGrafico = (PiePlot) montagemGrafico.getPlot();
        
        mudancaCorGrafico.setSectionPaint("Falha", Color.ORANGE);
        mudancaCorGrafico.setSectionPaint("Erro", Color.RED);
        mudancaCorGrafico.setSectionPaint("Sucesso", Color.GREEN);
Criado 23 de dezembro de 2012
Ultima resposta 23 de dez. de 2012
Respostas 1
Participantes 1