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

2D Java Discussion :

[JFreeChart] Différentes couleurs de fond


Sujet :

2D Java

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 45
    Par défaut [JFreeChart] Différentes couleurs de fond
    Bonjour.
    Voilà mon problème : je dois faire un graphique se mettant à jour toutes les secondes. Pour cela j'utilise un JFreeChart, qui marche très bien.
    Cependant, je voudrais utiliser plusieurs couleurs pour l'arrière plan (genre vert de 0 à 20, orange de 20 à 40, rouge de 40... vous avez compris).
    1) Est-ce possible ?
    2) Si oui, comment dois-je faire ? J'ai trouvé des exemples de gradients de couleurs, mais ce n'est pas ce que je veux faire.
    Voilà, merci pour vos réponses éventuelles.
    Ramy

  2. #2
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 64
    Par défaut
    As-tu essayé avec des IntervalMarker ?
    http://www.jfree.org/jfreechart/api/...valMarker.html

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 45
    Par défaut
    Merci pour ton idée, ça a l'air d'être ce que je recherche, mais je ne comprends pas l'utilisation des IntervalMarker. J'en crée un avec mes bornes, et ma couleur, mais je ne vois pas comment l'associer à mon graphique, en fait...
    Si tu as quelques instants pour m'expliquer, je t'en serai grandement reconnaissant !

    Edit : bon en fait j'ai plus ou moins compris, il faut faire un plot.addDomainMarker. Mon problème c'est que apparemment ça s'affiche bien au premier affichage du graphique, mais pas les fois d'après (toutes les secondes je modifie les valeurs de mon graphique en fait).

  4. #4
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 64
    Par défaut
    Après les mises à jour, les markers disparaissent ?

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 45
    Par défaut
    Je vais te mettre mon code, comme ça tu verras comment je fais (le code n'est pas de moi, je suis arrivé dans le projet il était déjà là, sûrement pompé sur le net, donc je ne suis pas sûr de tout comprendre ^^).

    Méthode principale de ma vue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    xySeries = new XYSeries("Graph");
     
    XYDataset dataSet = createDataset(xySeries);
     
    JFreeChart chart = createChart(dataSet);		
     
    frame = new ChartComposite(composite, SWT.NONE, chart, true);
    La méthode createChart :
    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
    private JFreeChart createChart(XYDataset dataset) {
     
    	// create the chart...
    	JFreeChart chart = ChartFactory.createXYLineChart(
    		("Mesure du champ éléctrique (KV/m) dans le temps"), // chart title
    		"X", // x axis label
    		"Y", // y axis label
    		dataset, // data
    		PlotOrientation.VERTICAL,
    		true, // include legend
    		true, // tooltips
    		false // urls
    		);
     
    	chart.setBackgroundPaint(Color.white);
     
    	plot = chart.getXYPlot();
    	plot.setBackgroundPaint(Color.lightGray);
     
    	plot.addDomainMarker(new IntervalMarker(100, 60, Color.red));		
    	plot.addDomainMarker(new IntervalMarker(60, 40, Color.orange));
    	plot.addDomainMarker(new IntervalMarker(40, 20, Color.yellow));
    	plot.addDomainMarker(new IntervalMarker(-20, 20, Color.green));
    	plot.addDomainMarker(new IntervalMarker(-40, -20, Color.yellow));
    	plot.addDomainMarker(new IntervalMarker(-60, -40, Color.orange));
    	plot.addDomainMarker(new IntervalMarker(-100, -60, Color.red));
     
    	plot.setDomainGridlinePaint(Color.white);
    	plot.setRangeGridlinePaint(Color.white);
     
    	NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
    	rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
     
    	return chart;
    }
    Et après à chaque itération, je met à jour xySeries par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public void redrawRealTimeGraph() {
    	xySeries.clear();
    	for(RMSMACMeasure measure : listMACMeasures) {
    		xySeries.add(measure.getDate().getTime(), measure.getValue());
    	}
    }
    (xySeries est un attribut de ma classe)

    Et donc, au moment où j'ouvre la vue qui contient mon graphique, la couleur est là, mais dès que les valeurs sont mises à jour, la couleur disparaît.

  6. #6
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 64
    Par défaut
    Je n'ai jamais utilisé de Marker avec des graphs mis à jour, je ne sais donc pas tellement ce qui ne vas pas là ... Peut-être es-tu obligé de les remettre à chaque actualisation, ce ne serait peut-être pas le code le plus otpimisé, mais ça devrait foncioinner.

    Tu peux également utiliser la méthode suivante si tu n'as pas besoin de plus de deux couleurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    plot.setDomainTickBandPaint(new Color(0, 100, 0, 50));

  7. #7
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 45
    Par défaut
    Aaaaah mais non, on s'est mal compris apparemment.
    Ce que je cherche à faire c'est des bandes de couleur selon l'axe des y, pas celui des x. Genre quand une valeur est de 65 pour un instant x, je voudrais que ce point se situe dans la bande rouge. Tu as du comprendre que je voulais des bandes verticales, alors que celles que je veux sont horizontales. Et c'est certainement pour ça que je ne vois pas les bandes que j'ai définies (je les ai définies jusqu'à 100 alors que mon axe des x commence à 12000000000000, il correspond à une date en millisecondes ^^)

  8. #8
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 64
    Par défaut
    Problème résolu donc ?

    Edit : bon, je dois avoir du mal aujourd'hui ... Remplace "Domain" par "Range" et ça devrait aller.

  9. #9
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 45
    Par défaut
    Bon, après vérification c'est moi qui n'avait rien compris à ce qu'il fallait faire. Il me fallait bien des bandes verticales, que j'ai pu mettre en place avec les IntervalMarker.
    Donc merci, et non tu n'as pas particulièrement du mal, ça vient beaucoup de moi ^^.
    Donc merci pour ta réponse.
    Post résolu

  10. #10
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 64
    Par défaut
    On s'en est sorti finalement !

    Tu peux indiquer que le problème est résolu en cliquant sur le bouton "Résolu" en dessous du dernier post

  11. #11
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 45
    Par défaut
    Oui oui c'est fait

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

Discussions similaires

  1. [XL-2003] Couleurs de fond différents si cellules colonne différents
    Par Vadorblanc dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 02/11/2010, 00h00
  2. [JFreeChart] Plusieurs couleurs de fond
    Par sarsipius dans le forum 2D
    Réponses: 5
    Dernier message: 10/04/2009, 16h08
  3. Réponses: 2
    Dernier message: 24/10/2008, 23h59
  4. Réponses: 1
    Dernier message: 30/07/2008, 18h43
  5. Réponses: 12
    Dernier message: 24/01/2006, 13h38

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