Jump to content
ThiagoN

Grafico JfreeChart

Recommended Posts

ThiagoN

bom dia

 

estou com dificuldade para mudar a cor da barra do grafico JfreeChart.

exemplo: se o valor de "X" for maior que 900 ( a barra fica em vermelho), e se o valor de "X" for menor que 900 (a barra fica em verde) .

 

alguém consegue me ajudar com algum exemplo?

obrigado

Share this post


Link to post
Share on other sites
apocsantos

Bom dia,

Tens de criar tantas barras, quantas esperas ter no gráfico e definir as cores aqui

     public class CustomHorizontalBarChartRenderer extends BarRenderer
       {
          
          public java.awt.Paint getItemPaint(int row,int column)
          {
             Color color;   
             
             if(column == 0) color = new Color(243,203,150);   
             else if(column == 1) color = new Color(237,177,98);
             else if(column == 2) color = new Color(231,151,45);
             else if(column == 3) color = new Color(162,150,85);
             else color = new Color(0,0,0);
             
             return color;
          }

Depois chamas o método para pintar o gráfico:

plot.setRenderer( new CustomHorizontalBarChartRenderer());

Cordiais cumprimentos,

Apocsantos


"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Share this post


Link to post
Share on other sites
ThiagoN
14 horas atrás, apocsantos disse:

Bom dia,

Tens de criar tantas barras, quantas esperas ter no gráfico e definir as cores aqui


     public class CustomHorizontalBarChartRenderer extends BarRenderer
       {
          
          public java.awt.Paint getItemPaint(int row,int column)
          {
             Color color;   
             
             if(column == 0) color = new Color(243,203,150);   
             else if(column == 1) color = new Color(237,177,98);
             else if(column == 2) color = new Color(231,151,45);
             else if(column == 3) color = new Color(162,150,85);
             else color = new Color(0,0,0);
             
             return color;
          }

Depois chamas o método para pintar o gráfico:


plot.setRenderer( new CustomHorizontalBarChartRenderer());

Cordiais cumprimentos,

Apocsantos

 

 

Edited by ThiagoN
erro

Share this post


Link to post
Share on other sites
ThiagoN

boa noite

tetei aplicar e não consegui..

 

esse é meu codico.

 

tenho uma classe de utilitario com o nome GraficoBarras. com o cod.

public GraficoBarras(String chartTitle, int x, int y, List<String> estacoes, List<String> erros) {
        super(chartTitle);
        this.estacoes = estacoes;
        this.erros = erros;
        
        
        //criando tipo de grafico
        JFreeChart chart =   ChartFactory.createBarChart(
                chartTitle,
                "",
                "",
                createDataset(),
                PlotOrientation.VERTICAL,//legenda
                false, true, true);
                 
                //Cor da barra do Charts
             //   chart.getCategoryPlot().getRenderer(0).setSeriesPaint(0, Color.red);  
                
                //Cor de Fundo de tela do Charts
        chart.setBackgroundPaint(Color.white);
        CategoryPlot plot = chart.getCategoryPlot();
                        
        //Cor de Fundo do Chrats
        plot.setBackgroundPaint(Color.white);
                        
         // colocando o gráfico em um painel
                 this.chartPanel = new ChartPanel(chart);
                 chartPanel.setPreferredSize(new java.awt.Dimension(x, y));
              
                // colocando valores no gráfico 
                  CategoryItemRenderer itemRerender = plot.getRenderer();
                  itemRerender.setItemLabelGenerator(new StandardCategoryItemLabelGenerator("{2}", new DecimalFormat("0")));
                  itemRerender.setItemLabelsVisible(true);
                 
                  
                      BarRenderer renderer = (BarRenderer) chart.getCategoryPlot().getRenderer();
                      renderer.setMaximumBarWidth(0.03); //seta a largura da barra
           
                       
               } 

e tenho um Frame com o nome de GraficoHora com o cod,

public void graficoHora(){
        
     List<Upm> erroH = UpmDAO.getInstance().findAll();
    
     /******************* criação do gráfico *********************/
        
        List<String> hora = new ArrayList();
        List<String> upm = new ArrayList();
        
        for (int i = 0; i < erroH.size(); i++) {
            hora.add(erroH.get(i).getHorasG());
            upm.add(Integer.toString(erroH.get(i).getUpm()));
        }

        GraficoBarras grafico = new GraficoBarras("UPM / Hora", 500, 270, hora, upm);
        pnlGrafico1.removeAll();
        pnlGrafico1.add(grafico.chartPanel, BorderLayout.CENTER);
        pnlGrafico1.revalidate();
        pnlGrafico1.repaint();
          
        /******************* criação do gráfico *********************/
           
    
    }

ma não consegui aplicar o cod para mudar a cor pelo valor da coluna

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.