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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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));

+ 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: 01/11/2010, 23h00
  2. [JFreeChart] Plusieurs couleurs de fond
    Par sarsipius dans le forum 2D
    Réponses: 5
    Dernier message: 10/04/2009, 15h08
  3. Réponses: 2
    Dernier message: 24/10/2008, 22h59
  4. Réponses: 1
    Dernier message: 30/07/2008, 17h43
  5. Réponses: 12
    Dernier message: 24/01/2006, 12h38

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