3 votes

JFreeChart : Comment tracer un graphique linéaire et un nuage de points sur le même diagramme

J'ai deux ensembles de données

int[] x1 = {1,2,3,4,5,6,7,8,9,10};
int[] y1 = {1,2,3,5,6,8,9,10,14,11};

int[] x2 = {1,2,3,4,5,6,7,8,9,10};
int[] y2 = {0,2,3,5,0,8,9,8,14,11};

int[] z2 = {1,2,3,1,2,3,1,2,3,1};

Je veux tracer le x1,y1 en tant que XYLineChart puis tracer x2,y2 en tant que scatter sur le même graphique sans ligne.

J'ai également besoin que chaque point scatter de x1, y2 soit d'une couleur différente en fonction de la valeur de z2 (1=Color.red, 2=Color.green, 3=Color.blue)

Comment puis-je faire cela?

Jusqu'à présent, j'ai:

JPanel panel_1 = new JPanel();
panel_1.setLayout(new BorderLayout(0, 0));
XYSeriesCollection dataset = new XYSeriesCollection();
XYSeries series1 = new XYSeries("series1");
for(int i=0; i

``

Cela résout le graphique en ligne. Maintenant, je dois coder le graphique scatter pour x2, y2 (avec les couleurs décrites ci-dessus) c'est là que je suis bloqué.

``

8voto

David Gilbert Points 2256

La méthode createXYLineChart() créera un graphique qui utilise un XYLineAndShapeRenderer. Donc, récupérez le renderer du plot et effectuez un cast vers XYLineAndShapeRenderer. Ensuite, vous pouvez appeler les méthodes setSeriesLinesVisible() et setSeriesShapesVisible() pour contrôler, pour chaque série, si les formes et/ou les lignes sont dessinées pour les éléments de données. De cette manière, vous pouvez utiliser un seul renderer et jeu de données, ce qui simplifie les choses.

Votre exigence de changer les couleurs en fonction d'une autre valeur de données nécessite un peu plus de travail. Vous devriez sous-classer la classe XYLineAndShapeRenderer et remplacer la méthode getItemPaint(int, int). Ici, vous pouvez renvoyer n'importe quelle couleur que vous voulez pour un élément de données. L'implémentation par défaut regarde l'index de série et renvoie la couleur pour la série. Vous devez également regarder l'index de l'élément, puis faire une recherche dans votre table de valeurs z et décider quelle couleur renvoyer.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X