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.
ViamaisBLOG
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.