Graphique avec JFreeChart

yannOpenGL Messages postés 141 Date d'inscription samedi 4 février 2012 Statut Membre Dernière intervention 3 avril 2013 - 11 mai 2012 à 09:40
yannOpenGL Messages postés 141 Date d'inscription samedi 4 février 2012 Statut Membre Dernière intervention 3 avril 2013 - 11 mai 2012 à 15:36
Bonjour,

je suis entrain de dessiner un graphique avec JFreeChart en Java sous Eclipse.

J'ai une série de données avec différentes valeurs.
J'aimerai affecter une couleur par tranche de valeur et les afficher sous forme de nuage de points.
Pour cela j'ai affecté ces valeurs à des séries en fonction de leur valeur.

XYSeries seriesGeo = new XYSeries("Val1");
XYSeries seriesGeo2 = new XYSeries("Val2");
XYSeries seriesGeo3 = new XYSeries("Val3");

for (int i=minimumSize ; i<maximumSize ;i+=19) //20000	// count
{
double val1 = Double.parseDouble(bufferLecture[i]);	//String to double
double val2 = Double.parseDouble(bufferLecture[i+1]);	//String to double
        	
double test = ( Double.parseDouble(bufferLecture[i-10]) + Double.parseDouble(bufferLecture[i-11])) /2;
        	
if (test == 0) seriesGeo.add(val1, val2);
else if ( test > 0 && test <= 3) seriesGeo2.add(val1, val2);
else seriesGeo3.add(val1, val2);
} 

XYDataset xyDatasetGeo = new XYSeriesCollection(seriesGeo);
XYDataset xyDatasetGeo2 = new XYSeriesCollection(seriesGeo2);
XYDataset xyDatasetGeo3 = new XYSeriesCollection(seriesGeo2);

JFreeChart chartGeo = ChartFactory.createScatterPlot
("XYLine Chart using JFreeChart", "Différentes mesures", "Caractéristique",
xyDatasetGeo, PlotOrientation.VERTICAL, true, true, false);

XYPlot plot2=(XYPlot) chartGeo.getPlot();
plot2.setDataset(1, (XYDataset) xyDatasetGeo2);
XYItemRenderer rendu2= new XYLineAndShapeRenderer();
rendu2.setSeriesPaint(0, Color.pink);
plot2.setRenderer(1,rendu2);

XYPlot plot3=(XYPlot) chartGeo.getPlot();
plot3.setDataset(1, (XYDataset) xyDatasetGeo3);
XYItemRenderer rendu3= new XYLineAndShapeRenderer();
rendu3.setSeriesPaint(0, Color.green);
plot3.setRenderer(1,rendu3);

ChartFrame frameGeo=new ChartFrame("XYLine Chart",chartGeo);

frameGeo.setSize(700,500);
frameGeo.setLocation(700,0);
frameGeo.setVisible(true);


Je sais que je récupère correctement mes valeurs vu que si je les affiche toutes dans la même série, donc toute de la même couleur, ça marche.

Mon graphique s'affiche avec la 1ère série en rouge (test = 0), la 2ème série de la couleur de la 3ème et la 3ème ne s'affiche pas.
De plus, les points de la 2ème série sont reliés entre eux contrairement à ce que je veux.

Je n'arrive pas à comprendre pourquoi. Pourriez-vous m'aider ?

1 réponse

yannOpenGL Messages postés 141 Date d'inscription samedi 4 février 2012 Statut Membre Dernière intervention 3 avril 2013
11 mai 2012 à 15:36
L'erreur est à cette ligne (que j'ai corrigé) :
XYDataset xyDatasetGeo3 = new XYSeriesCollection(seriesGeo3);


Par contre, il me reste toujours un problème. Je n'arrive n'y à choisir la couleur (ça se fait automatiquement). A la limite ce n'est pas un gros problème.

Par contre mes nuages de points sont reliés par des traits fins et je ne sais pas comment les enlever.
0
Rejoignez-nous