IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

[JFreechart] changer les couleurs des barres d'un diagramme


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 162
    Par défaut [JFreechart] changer les couleurs des barres d'un diagramme
    Bonjour.

    Je débute avec jfreechart et je suis déjà confronté à un problème.

    Mon but est de dessiner un graphique histogramme. Ma fonction prends en paramètre un tableau qui contient un mois, un intitulé, et un nombre.


    Je veux que selon la note, la couleur soit celle que je désire, mais je n'arrive pas à le faire.

    J'ai en effet mon code qui ressemble pour le moment à ca (je passe les valeurs en dur...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     
        DefaultCategoryDataset dataset = new DefaultCategoryDataset(); 
        dataset.addValue(1, "Tomate", "Janvier"); 
        dataset.addValue(3, "Chou", "Février"); 
        dataset.addValue(1, "Tomate", "Mars"); 
        dataset.addValue(2, "Carotte", "Avril"); 
        dataset.addValue(0, "Patate", "Mai"); 
        dataset.addValue(4, "Poireau", "Juin"); 
        dataset.addValue(0, "Patate", "Juillet"); 
        dataset.addValue(1, "Tomate", "Août"); 
        dataset.addValue(2, "Carotte", "Septembre");
        dataset.addValue(3, "Chou", "Octobre"); 
        dataset.addValue(2, "Carotte", "Novembre"); 
        dataset.addValue(4, "Poireau", "Décembre"); 
     
        JFreeChart barChart = ChartFactory.createBarChart("Choix du légume", "", 
          "Num legume", dataset, PlotOrientation.VERTICAL, false, false, false);
        CategoryPlot plot = barChart.getCategoryPlot();
        OutputStream out = response.getOutputStream(); 
        response.setContentType("image/png"); 
        ChartUtilities.writeChartAsPNG(out, barChart, 305, 230); 
      } 
    }

    J'ai essayé de changer la couleur, mais je ne sais pas comment dire que pour chou je veux du jaune, pour Patate du marron...

    J'ai essayé des commandes du style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        BarRenderer renderer = (BarRenderer) plot.getRenderer();
        renderer.setSeriesPaint(0, Color.red);
        renderer.setSeriesPaint(1, Color.green);
        renderer.setSeriesPaint(2, Color.blue);
    Mais c'est un numéro en paramètre, donc ce n'est pas ce que je recherche



    Si quelqu'un s'y connait en jfreechart, je serais heureux qu'il me fasse part de son expérience.

    Merci

  2. #2
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 162
    Par défaut
    J'ai réussi à force de tatonner de trouver ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     
    	//row keys
    	String series1 = "Chou";
    	String series2 = "Carotte";
    	String series3 = "Patate";
    	String series4 = "Poireau";
    	String series5 = "Tomate";
    	//column keys
    	String category1 = "Janvier";
    	String category2 = "Février";
    	String category3 = "Mars";
    	String category4 = "Avril";
    	String category5 = "Mai";
    	String category6 = "Juin";
    	String category7 = "Juillet";
    	String category8 = "Août";
    	String category9 = "Septembre";
    	String category10 = "Octobre";
    	String category11 = "Novembre";
    	String category12 = "Décembre";
     
     
    	Color lightgray = new Color(148, 239, 148);
     
     
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
     
     
        dataset.addValue(1.1, series1, category1); 
        dataset.addValue(3, series5, category2); 
        dataset.addValue(1.8, series3, category3); 
        dataset.addValue(2.71, series5, category4); 
        dataset.addValue(0.6, series1, category5); 
        dataset.addValue(2.3, series4, category6); 
        dataset.addValue(0.97, series1, category7); 
        dataset.addValue(1.5, series2, category8); 
        dataset.addValue(0.2, series1, category9);
        dataset.addValue(1.9, series3, category10); 
        dataset.addValue(2.8, series5, category11); 
        dataset.addValue(1.35, series2, category12); 
     
     
     
        JFreeChart barChart = ChartFactory.createBarChart("Choix des légumes", "", 
          "Note legume", dataset, PlotOrientation.VERTICAL, false, false, false);
     
     
     
        CategoryPlot plot = barChart.getCategoryPlot();
     
     
        BarRenderer renderer = (BarRenderer) plot.getRenderer();
     
     
     
        GradientPaint gp1 = new GradientPaint(
        		0.0f, 0.0f, lightgray,
        		0.0f, 0.0f, new Color(148, 239, 148)
        		);
     
     
        renderer.setSeriesPaint(0, Color.blue);
     
     
        renderer.setSeriesPaint(1, gp1);
     
     
        renderer.setSeriesPaint(2, Color.yellow);
        renderer.setSeriesPaint(3, Color.orange);
        renderer.setSeriesPaint(4, Color.red);
     
     
        response.setContentType("image/png");
        OutputStream out = response.getOutputStream(); 
     
     
     
     
        ChartUtilities.writeChartAsPNG(out, barChart, 305, 230); 
      } 
    }


    Le résultat donne ce graphique:



    Je ne comprends pas pourquoi j'ai des espacements entre les barres, moi je veux que les barres soient collées les unes aux autres, et que leur largeur soit égales pour remplir le graphique, si vous connaissez la marche à suivre...

    Merci

  3. #3
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Tu as des espacements entre les barres parce que tu as cinq séries et donc, il réserve de la place pour les 5 séries dans chacune des catégories.

  4. #4
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 162
    Par défaut
    Ha mais c'est pas ce que je voulais!!

    Mince, je vois pas comment je vais faire alors pour affecter une couleur selon la note

    Si quelqu'un à la soluce, où si quelqu'un à une idée de la marche à suivre, je suis preneur!

  5. #5
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Remplace ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    JFreeChart barChart = ChartFactory.createBarChart("Choix du légume", "", 
          "Num legume", dataset, PlotOrientation.VERTICAL, false, false, false);
    par celui-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    JFreeChart barChart = ChartFactory.createStackedBarChart("Choix du légume", "", 
          "Num legume", dataset, PlotOrientation.VERTICAL, false, false, false);
    et vois si ça te convient mieux.

  6. #6
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 162
    Par défaut
    Merci c'est vraiment parfait!!!


    Excellent, YES!!

    Ha tu imagines pas comment ca fait du bien de voir mon graphique comme je le voulais, lol!

  7. #7
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 162
    Par défaut
    Je repensais à la proposition de metalpetsFR

    Si je fais ca, est ce que je peux réorganiser ensuite mes barres en les rageant par ordre croissant sur la légende... (Je remplace Janvier par 01 etc)

    J'ai cherché des méthodes dans la javadoc, mais je suis pas sur de leur utilisation, par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       plot.setDatasetRenderingOrder()
    Je sais pas trop ce que ca fait, pas vraiment bien compris l'usage...

  8. #8
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 162
    Par défaut
    Ne soyez pas timide hein, lancez vous, toute proposition est la bienvenue!

  9. #9
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 162
    Par défaut
    Toujours personne pour me répondre?

Discussions similaires

  1. Changer les couleurs des axes
    Par Ptinéwik dans le forum MATLAB
    Réponses: 6
    Dernier message: 01/02/2008, 15h08
  2. [C#] Changer les couleurs des titres colonnes d'une listView
    Par ExSter dans le forum Windows Forms
    Réponses: 4
    Dernier message: 15/04/2007, 21h02
  3. Comment changer les couleurs des lignes avec displaytag
    Par rlnd23 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 09/10/2006, 13h52
  4. changer les couleurs des frames
    Par jack_1981 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 08/12/2005, 16h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo