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.