Gerando gráficos de pizza em Java com jFreeChart

Gerar gráficos em Java para dar um “plus” na sua aplicação é uma tarefa que tem se tornado trivial, a menos é claro que você goste de sofrer e prefira utilizar o Graphics da API Java. Utilizando o jFreeChart é possível gerar gráficos complexos de forma intuitiva.

O primeiro passo é acessar o site oficial e baixar a última versão do jFreeChart, agora é só descompactar para alguma pasta dentro do seu computador (o ideal é que seja descompactado para dentro do seu Classpath) e depois inserir dois arquivos na biblioteca do seu projeto: o jcommon-1.0.13.jar e o jfreechart-1.0.10.jar (eu utilizei a versão 1.0.10 do jFreeChart).

Com tudo pronto iremos ao código para gerar um gráfico de pizza de forma simples, crie uma classe chamada Grafico e dentro dela crie os métodos:

private static javax.swing.JPanel pizza3D(ArrayList nome, ArrayList valor,
String tituloGrafico, float transparencia, String tipo){
DefaultPieDataset data = new DefaultPieDataset();

for(int i = 0; i < nome.toArray().length; i++){
data.setValue("" + nome.get(i).toString(),
new Double(valor.get(i).toString()));
}

JFreeChart chart = ChartFactory.createPieChart3D (tituloGrafico,
data, true, true, true);

java.awt.Color cor = new java.awt.Color(200, 200, 200);
chart.setBackgroundPaint(cor);
PiePlot3D plot = (PiePlot3D) chart.getPlot();
plot.setLabelLinksVisible(true);
plot.setNoDataMessage("Não existem dados para serem exibidos " +
no gráfico");

plot.setStartAngle(90);
plot.setDirection(Rotation.CLOCKWISE);

plot.setForegroundAlpha(transparencia);
plot.setInteriorGap(0.20);

ChartPanel chartPanel = new ChartPanel(chart);

return chartPanel;
}

e

public static javax.swing.JPanel pizza3DStatic(ArrayList nome, ArrayList
valor, String tituloGrafico){
return pizza3D(nome, valor, tituloGrafico, 0.5f, "Static");
}

Agora utilize um construtor da seguinte forma:

public Grafico(){

	}

Agora está acabando, a classe Grafico é a responsável por realmente “gerar” o gráfico, é essa classe que fará o trabalho pesado da sua aplicação.

Vamos então criar a classe Main que irá iniciar a aplicação e enviar os dados chamando o método da Classe Grafico e finalmente gerar o gráfico:

public static void main(String[] args) {
        ArrayList nomes = new ArrayList();
        ArrayList valores = new ArrayList();
        JPanel painel = new JPanel();
        JFrame frame = new JFrame();
        ScrollPane scroll = new ScrollPane(1);

        for(int i = 0; i < 5; i++){
            nomes.add("Nome" + i);
            valores.add(5 + i);
        }

        painel.add(Grafico.pizza3DStatic(nomes, valores, 
               "Título do Gráfico"));

        scroll.add(painel);
	frame.getContentPane().add(scroll);
	frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
	frame.setTitle("Título Geral");
	frame.setPreferredSize(new Dimension(750, 520));
	frame.pack();
	frame.setVisible(true);
    }

    public Main() {
	super();
    }

O código acima irá popular os dois ArrayList responsáveis pelos nomes e valores que irão compor o gráfico e em seguida amarrar o jPanel gerado pelo gráfico em um jFrame com um jScrool para permitir a exibição do mesmo.

Como a API jFreeChart é muito intuitiva o processo para trabalhar com outros tipos de gráfico, em breve irei mostrar como é simples gerar também gráficos de barras e linha.

Petter Rafael

Desenvolvedor Web atua com as tecnologias Java e PHP apoiadas pelos bancos de dados Oracle e MySQL. Além dos ambientes de desenvolvimento acima possuiu amplo conhecimento em servidores Apache/Tomcat, Photoshop, Arte & Foto, Flash e mais uma dezena de ferramentas e tecnologias emergentes. Atualmente colabora com o Viablog escrevendo sobre programação e tecnologia.