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...
Version imprimable
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:
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:
1
2 CustomXYItemRenderer customXYItemRenderer=new CustomXYItemRenderer() ; xyPlot.setRenderer(customXYItemRenderer) ;
:king:
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:
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:
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.
la 1.0.9
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 :mrgreen:
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:
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; } }