Como colocar os valores dentro das barras em um gráfico usando JFreeChart?

1 resposta
satangoss

Olá pessoal tenho um gráfico com barras horizontais e gostaria de colocar os valores dentro das próprias barras. No código abaixo os valores estão do lado de fora do gráfico.

public static BufferedImage createChartBarrasTotalizaPF(TotalizaFinanceiro totalizaFinanceiro) {
        BufferedImage buf = null;

        final DefaultCategoryDataset result = new DefaultCategoryDataset();

        String label1 = "PF Contrat";
        String label2 = "PF Prev ASC";
        String label3 = "PF Contrat OS";
        String label4 = "PF Pagos";
        String label5 = "PF Ñ Contratado";

        float naoPagos = totalizaFinanceiro.getTotalPontoFuncaoContrato() - totalizaFinanceiro.getTotalPontosFuncaoContratadoOS() ;

        result.addValue(totalizaFinanceiro.getTotalPontoFuncaoContrato(), label1, String.valueOf((int) totalizaFinanceiro.getTotalPontoFuncaoContrato()));
        result.addValue(totalizaFinanceiro.getTotalPontosFuncaoPrevistoASC(), label2, String.valueOf((int) totalizaFinanceiro.getTotalPontosFuncaoPrevistoASC()));
        result.addValue(totalizaFinanceiro.getTotalPontosFuncaoContratadoOS(), label3, String.valueOf((int) totalizaFinanceiro.getTotalPontosFuncaoContratadoOS()));
        result.addValue(totalizaFinanceiro.getTotalPontosFuncaoPagos(), label4, String.valueOf((int) totalizaFinanceiro.getTotalPontosFuncaoPagos()));
        result.addValue(naoPagos, label5, String.valueOf((int) naoPagos));

        JFreeChart chart = ChartFactory.createBarChart3D("Pontos de Função", "", "Valores",
                result, PlotOrientation.HORIZONTAL, true, true, false);

        //Teste da grade
        CategoryPlot cp = chart.getCategoryPlot();
        NumberAxis rangeAxis = (NumberAxis) cp.getRangeAxis();
        rangeAxis.setUpperMargin(0.15);

        cp.setBackgroundPaint(Color.lightGray);
        cp.setDomainGridlinePaint(Color.black);
        cp.setDomainGridlinesVisible(true);
        cp.setRangeGridlinePaint(Color.white);
        int colorCode = 0x00FFFFFF;
        chart.setBackgroundPaint(new Color(colorCode));
        chart.getTitle().setPaint(Color.black);
        CategoryPlot p = chart.getCategoryPlot();
        p.setRangeGridlinePaint(Color.black);
        //Aqui é codigo antigo
        chart.setBorderVisible(true);
        chart.setBorderPaint(Color.black);
        buf = chart.createBufferedImage(400, 250);
        return buf;
    }

Agradeço desde já as respostas.

1 Resposta

juniorsatanas

lugar errado ! para postar !

Criado 15 de outubro de 2010
Ultima resposta 26 de nov. de 2010
Respostas 1
Participantes 2