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

Interfaces Graphiques en Java Discussion :

[JFreeChart] changer la couleur des traits du graphe


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre confirmé Avatar de yaya_la_rafale
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 92
    Par défaut [JFreeChart] changer la couleur des traits du graphe
    Bonjour,

    Comment décider de la couleurs différentes de plusieurs courbes ?

    j'utilise JFreeChart pour dessiner plusieurs tracés de points (5 courbes).
    Je voudrais donner à chacun une couleur particuliere.

    Je n'y arrive pas, tout mes graphes ont la premiere couleur attibuee..
    (les courbes sont toutes vertes, et le contenu des carres est magenta.)

    voici, mon code, auriez vous une idee svp ???
    merci d'avance :

    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
     
    CategoryDataset[] dataset = getMultiDataSet(startDate, endDate);
     
    // Creation du chart
    JFreeChart chart = ChartFactory.createLineChart(   
    	titreGraphe,       		// chart title   
    	"Jours",                     	  // Label en bas du graphe   
    	"Axe 0", // label sur axe vertical
    	dataset[0],         // donnees   
    	PlotOrientation.VERTICAL,         // orientation   
    	true,                             // include legende en bas  
    	true,                             // tooltips en mouse over
    	false                             // urls   
    );   
    chart.setBackgroundPaint(Color.white);   
     
    CategoryPlot plot = (CategoryPlot) chart.getPlot();   
    plot.setBackgroundPaint(Color.lightGray);   
    plot.setRangeGridlinePaint(Color.white);   
     
    // AXE 0 
    NumberAxis numberAxis0 = (NumberAxis) plot.getRangeAxis();   
    numberAxis0.setPositiveArrowVisible(true);
    numberAxis0.setRange(0, 6000);
    numberAxis0.setLabelPaint(Color.black);
    numberAxis0.setTickLabelPaint(Color.black);
    numberAxis0.setVisible(true); // echelle visible
    plot.setRangeAxis(0, numberAxis0);
     
    //  AXE 1
    NumberAxis numberAxis1 = new NumberAxis("Axe 1");
    numberAxis1.setPositiveArrowVisible(true);
    numberAxis1.setRange(0, 8000);
    numberAxis1.setLabelPaint(Color.blue);
    numberAxis1.setTickLabelPaint(Color.blue);
    numberAxis1.setVisible(isScaleVisible);
    plot.setRangeAxis(1, numberAxis1);
    plot.setDataset(1, dataset[1]);   
    plot.mapDatasetToRangeAxis(1, 1);
     
    // Renderer 0
    LineAndShapeRenderer renderer0   
    		= (LineAndShapeRenderer) plot.getRenderer();   
    renderer0.setSeriesShapesVisible(0, true);   
    renderer0.setDrawOutlines(true);   
    renderer0.setUseFillPaint(true);  
    // ***** Cette couleur est celle de toutes les courbes lorsque j'execute :((
    renderer0.setSeriesPaint(0, Color.green);//couleur du trait du graphe
    renderer0.setSeriesFillPaint(0, Color.magenta); // couleur du contenu du carre
    plot.setRenderer(0, renderer0);			
     
    // Renderer 1
    LineAndShapeRenderer renderer1    
    		= (LineAndShapeRenderer) plot.getRenderer();   
    renderer1.setSeriesShapesVisible(0, true);   
    renderer1.setDrawOutlines(true);   
    renderer1.setUseFillPaint(true);  
    renderer1.setSeriesPaint(1, Color.red); // couleur du trait du graphe
    renderer1.setSeriesFillPaint(1, Color.yellow); // couleur du contenu du carre
    plot.setRenderer(1, renderer1);

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 096
    Par défaut
    Il faut créer diffèrents renderer et ne pas utiliser le même comme il me semble le voir dans le code.

    Mais cela doit dependre aussi de tes données, selon si tu as plusieur series, collections.

    Par exemple ce code doit fonctionner pour mettre une couleur a chacune des series (un peu different certes) :

    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
      XYItemRenderer renderer1 = new StandardXYItemRenderer();
            XYItemRenderer renderer2 = new StandardXYItemRenderer();
            XYItemRenderer renderer3 = new StandardXYItemRenderer();
            XYItemRenderer renderer4 = new StandardXYItemRenderer();
            XYItemRenderer renderer5 = new StandardXYItemRenderer();
            XYItemRenderer renderer6 = new StandardXYItemRenderer();
            renderer1.setSeriesPaint(0, Color.green);
            renderer2.setSeriesPaint(0, Color.blue);
            renderer3.setSeriesPaint(0, Color.red);
            renderer4.setSeriesPaint(0, Color.cyan);
            renderer5.setSeriesPaint(0, Color.magenta);
            renderer6.setSeriesPaint(0, Color.orange);
            plot.setRenderer(0, renderer1);
            plot.setRenderer(1, renderer2);
            plot.setRenderer(2, renderer3);
            plot.setRenderer(3, renderer4);
            plot.setRenderer(4, renderer5);
            plot.setRenderer(5, renderer6);
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé Avatar de yaya_la_rafale
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 92
    Par défaut
    Merci. mais j'ai bien 1 renderer par courbe
    ce n'est donc pas le probleme..
    peut etre ma declaration ?? mon affectation ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // Renderer 0
    LineAndShapeRenderer renderer0   
    		= (LineAndShapeRenderer) plot.getRenderer(); 
     
    // Renderer 1
    LineAndShapeRenderer renderer1    
    		= (LineAndShapeRenderer) plot.getRenderer();
    et je les affecte tout 2 à mon chart :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    plot.setRenderer(0, renderer0);	
    plot.setRenderer(1, renderer1);

  4. #4
    Membre confirmé Avatar de yaya_la_rafale
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 92
    Par défaut
    ca marche pas

    Par exemple, si j'écris ca, tous les graphes sont green
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    renderer0.setSeriesPaint(0, Color.green);
    renderer1.setSeriesPaint(1, Color.red);
    
    plot.setRenderer(0, renderer0);	
    plot.setRenderer(1, renderer1);
    ils sont tous red" avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    renderer0.setSeriesPaint(0, Color.green);
    renderer1.setSeriesPaint(0, Color.red);

    et pourtant les renderers sont différents comme suggérés
    ??? une idee ???

  5. #5
    Membre confirmé Avatar de yaya_la_rafale
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 92
    Par défaut
    ca marche .. j'ai change tellement de truc , je sais plus dire oui..
    plusieurs axes ordonnees, 1 rendereres.. bref ca marche .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/08/2014, 00h11
  2. Réponses: 0
    Dernier message: 31/05/2011, 10h13
  3. [JFreeChart] Changer la couleur des points
    Par tvo66 dans le forum 2D
    Réponses: 0
    Dernier message: 28/05/2009, 10h53
  4. [JFreechart] changer les couleurs des barres d'un diagramme
    Par keumlebarbare dans le forum Servlets/JSP
    Réponses: 15
    Dernier message: 23/11/2006, 11h06
  5. Réponses: 5
    Dernier message: 18/07/2006, 16h10

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