JSF + JFreeChart + Grafico de barras

3 respostas
joaorafael

Preciso colocar espaço entre as barras do grafico de barras ja tentei de várias formas e não consegui. Preciso também deixar as barras maiores pois as mesmas estao muito pequenas.
Já pesquisei encontrei alguns exemplos mas não funciona.
Segue abaixo os metodo que estou gerando o grafico.

Este é o codigo que gero o DataSet

private CategoryDataset createCategoryDataset(List<Aluno> listaAluno, boolean nota, int idMateria) {

            DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        
            if(nota){

                   for(Aluno aluno : listaAluno){
                     
                        for(OrdemNotaAluno ordem : aluno.getOrdensNotaAluno()){
                         
                             for(AvaliacaoParcial avaliacao : ordem.getAvaliacaoParcial()){
                                 
                                   dataset.addValue(ordem.getNotaAluno(), "Nota" + avaliacao.getOrdem(), aluno.getNomeAluno());

                             }

                        }
                  }
                
            } else {
                 
                  for(Aluno aluno : listaAluno){
                       
                        dataset.addValue(calcularPorcentagemDePresenca(idMateria, aluno), "Frequência" , aluno.getNomeAluno());
                  }

            }

            return dataset;
      }

Código que gero o gráfico:

public BufferedImage gerarGraficoDeBarras(List<Aluno> listaAluno, boolean mostrarNota, int idMateria){
         
            CategoryDataset catds = new DefaultCategoryDataset();
          
            catds = createCategoryDataset(ordenacaoList(listaAluno, "mediaFinal"), mostrarNota,idMateria);
         
            JFreeChart chart = ChartFactory.createBarChart("", "", "", catds,PlotOrientation.HORIZONTAL,true, true,false);
           
            chart.setBackgroundPaint(Color.white);

           CategoryPlot plot = chart.getCategoryPlot();

           plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_LEFT);
             
//        final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();

//        rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
       
         NumberAxis rangeAxis = (NumberAxis)plot.getRangeAxis();
 
         rangeAxis.setUpperMargin(0.30);
      
        plot.setBackgroundPaint(Color.lightGray);

        plot.setDomainGridlinePaint(Color.white);

        plot.setDomainGridlinesVisible(true);

        plot.setRangeGridlinePaint(Color.white);
       
      //Colocar o traço na media 7 da turma.

        Marker marker = new ValueMarker(7.0);

//        marker.setLabel("Media Turma"); 

//        marker.setLabelFont(new Font("SansSerif", Font.ITALIC, 8)); 

//        marker.setLabelAnchor(RectangleAnchor.LEFT); 

//        marker.setLabelTextAnchor(TextAnchor.CENTER_LEFT); 

        marker.setPaint(Color.BLACK);   

        plot.addRangeMarker(marker);
      
        BarRenderer renderer = (BarRenderer) plot.getRenderer();

        renderer.setSeriesPaint(0, Color.BLUE);

        renderer.setSeriesPaint(1,Color.GREEN);

        renderer.setSeriesPaint(2,Color.ORANGE );

        renderer.setSeriesPaint(3,Color.RED);

        renderer.setSeriesItemLabelsVisible(0,Boolean.TRUE);

        renderer.setSeriesItemLabelsVisible(1,Boolean.TRUE);

        renderer.setSeriesItemLabelsVisible(2,Boolean.TRUE);

        renderer.setSeriesItemLabelsVisible(4, Boolean.TRUE); 

        renderer.setDrawBarOutline(false);
      
        renderer.setSeriesCreateEntities(0, false);
 
        BufferedImage img = chart.createBufferedImage(600,600);
          
        return img;

      }

Pois este grafico vai mostrar quatro notas para cada aluno. e para separar os alunos quero que tenha um espaço em branco.
So que ele monta o grafico com as informações todas juntas sem a separação.
Alguem sabem como posso por o espaço entre eles e deixar as barras maiores?

Desde ja agradeço.

3 Respostas

joaorafael

Pelos teste que fiz ele gera os espaços automatico e o tamanho das barras tbem.
Gostaria de saber se tem como aumentar os espaços e a barra quano a lista que passo para montar o grafico é de quarenta alunos e cada aluno com quato notas.

Grato.

H

Grande João… beleza?

Seguinte, andei pesquisando sobre o que você precisa… e não tem como aumentar a altura das barras porque o JFreeChart calcula o tamanho das barras levando em consideração o tamanho do gráfico e a quantidade de séries do seu DataSet.

O que você pode fazer é definir a altura do seu gráfico e colocar ele dentro de um JScrollPane(se estiver usando Swing) ou colocar dentro de uma div com Style overflow: auto.

Qualquer coisa é só avisar…

Valeu

joaorafael

Blz…

Valeu muito obrigado.

Vou testar e qualquer coisa lhe aviso.

Criado 22 de maio de 2009
Ultima resposta 25 de mai. de 2009
Respostas 3
Participantes 2