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] Couleur différente entre deux points


Sujet :

2D Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 40
    Points : 34
    Points
    34
    Par défaut [JFreeChart] Couleur différente entre deux points
    bonjour,

    je travail avec "XYSeries" et ma question c'est:
    es que je peut affecter une couleur différente pour une ligne entre deux points dans la meme serie...

  2. #2
    Expert éminent

    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
    Points : 7 778
    Points
    7 778
    Par défaut
    Tu peux créer une classe qui hérite de StandardXYItemRenderer et dans laquelle tu redéfinis la méthode getItemPaint par exemple comme 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
    public class CustomXYItemRenderer extends StandardXYItemRenderer
    {
    	public CustomXYItemRenderer()
    	{
    	}
     
    	public Paint getItemPaint(int i, int j)
    	{
    		XYDataset xyDataset = getPlot().getDataset();
    		double x = xyDataset.getXValue(i, j);
    		if (x > 5D & x <= 10D ) 
    			return Color.green;
    		else 
    			return Color.red;
    	}
    }
    Dans mon exemple, 5D et 10 D correspondent à des valeurs de X existantes dans la XYSeries.
    La ligne sera donc de couleur verte pour les valeurs de X comprises entre 5D et 10D.

    Et ensuite, tu fais appel à cette classe comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CustomXYItemRenderer customXYItemRenderer=new CustomXYItemRenderer() ;
    xyPlot.setRenderer(customXYItemRenderer) ;

  3. #3
    Nouveau membre du Club
    Inscrit en
    Octobre 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 40
    Points : 34
    Points
    34
    Par défaut


    t'est la meilleure ;-)

    merci!

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    bonjour,

    juste une petite question :

    comment faire pour appliqué cette méthode a des points plutot qu'a une courbe ?

    je cherche depuis un petit moment mais je n'ai rien trouvé de convenable....

    merci

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 64
    Points : 64
    Points
    64
    Par défaut
    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
    public class CustomXYItemRenderer extends StandardXYItemRenderer
    {
    	public CustomXYItemRenderer()
    	{
    	}
     
    	public Paint getItemPaint(int i, int j)
    	{
    		XYDataset xyDataset = getPlot().getDataset();
    		double x = xyDataset.getXValue(i, j);
    		if (x = 10D ) 
    			return Color.green;
    		else 
    			return Color.red;
    	}
    }
    Ca devrait te retourner vert pour ton point d'abscisse 10, et rouge pour le reste.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    pour etre tout a fait précis il faut que j'affiche des ellipses de tailles et de couleurs différentes, pour cela je défini une shape (a l'interieur d'un mouse listener)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Ellipse2D.Double t;
     
    if (e.getClickCount() != 223)
    {
         t = new Ellipse2D.Double(0, 0, 4, 4);
     }
     else
     {
         t = new Ellipse2D.Double(0, 0, 20, 30);
     }
     
    rend.setShape(t);
    Le problème est que lorsque je défini un CustomRenderer comme décrit plus haut, mes modification sur la shape ne sont pas prises en compte....

  7. #7
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 64
    Points : 64
    Points
    64
    Par défaut
    Oui, forcément, la méthode s'appliquait à des courbes ...

    Chacune de tes ellipses doit être de couleur différente, ou tu veux une même ellipse composée de différentes couleur ?

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    Chacune des elipses doit etre de couleur différente

    merci pour ton aide

  9. #9
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 64
    Points : 64
    Points
    64
    Par défaut
    Tu utilises quelle version de JFreeChart ?

    Parce que la méthode .setShape est Deprecated pour moi.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    la 1.0.9

  11. #11
    Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 64
    Points : 64
    Points
    64
    Par défaut
    Ok, j'utilise la 1.0.10

    Tu peux par contre aller faire un tour par là : http://www.jfree.org/jfreechart/api/javadoc/index.html ca devrait resoudre tes problemes.

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    C'est bon tout baigne
    il fallai mettre getBaseShapesVisible() a true tout simplement...

    Merci pour ton aide

    Voila un exemple pour ceux que ca peut eventuellement intéréssé

    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
     
    public class CustomXYItemRenderer extends StandardXYItemRenderer
        {
     
            public CustomXYItemRenderer()
            {
     
            }
     
            public java.awt.Shape getItemShape(int x, int y)
            {
                 Ellipse2D.Double t;
                 t = new Ellipse2D.Double(0, 0, 30, 4);
     
                 return(t);
            }
     
            public boolean getPlotLines()
            {
                return(false);
            }
     
            public boolean getBaseShapesVisible() 
            {
                return(true);
            }
     
            public Paint getItemPaint(int i, int j)
            {
                XYDataset xyDataset = getPlot().getDataset();
    	    double x = xyDataset.getXValue(i, j);
                if (x > 3 && x < 8)
                    return Color.green;
                else
                    return Color.red;
            }
        }

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

Discussions similaires

  1. Compter pixels différents entre deux images
    Par hiccup dans le forum OpenGL
    Réponses: 5
    Dernier message: 13/03/2007, 14h26
  2. positionnement différents entre deux navigateurs
    Par darcy dans le forum Mise en page CSS
    Réponses: 11
    Dernier message: 27/11/2006, 15h46
  3. [Base de données Spatial] Distance entre deux points
    Par Pumpkins dans le forum Requêtes
    Réponses: 2
    Dernier message: 10/11/2006, 12h18
  4. Statistiques différentes entre deux DBMS_STAT
    Par genio dans le forum Oracle
    Réponses: 12
    Dernier message: 20/10/2006, 14h09
  5. Calcul de distance entre deux points en WGS84
    Par marieR dans le forum Langage
    Réponses: 5
    Dernier message: 03/08/2006, 17h07

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