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...
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...
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 :
Dans mon exemple, 5D et 10 D correspondent à des valeurs de X existantes dans la XYSeries.
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; } }
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) ;
t'est la meilleure ;-)
merci!
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
Ca devrait te retourner vert pour ton point d'abscisse 10, et rouge pour le reste.
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; } }
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)
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....
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);
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 ?
Chacune des elipses doit etre de couleur différente
merci pour ton aide
Tu utilises quelle version de JFreeChart ?
Parce que la méthode .setShape est Deprecated pour moi.
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.
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; } }
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager