JavaFX - Nuage de points

Un nuage de points est un type de graphique qui utilise les valeurs de deux variables tracées dans un plan cartésien. Il est généralement utilisé pour découvrir la relation entre deux variables.

Voici un diagramme de dispersion tracé entre l'aire et le poids.

Dans JavaFX, un diagramme de dispersion est représenté par une classe nommée ScatterChart. Cette classe appartient au packagejavafx.scene.chart. En instanciant cette classe, vous pouvez créer un nœud ScatterChart dans JavaFX.

Étapes pour générer un graphique en nuage de points

Pour générer un graphique en aires dans JavaFX, suivez les étapes ci-dessous.

Étape 1: Créer une classe

Créez une classe Java et héritez du Application classe du package javafx.application. Vous pouvez ensuite implémenter lestart() méthode de cette classe comme suit.

public class ClassName extends Application {  
   @Override     
   public void start(Stage primaryStage) throws Exception {      
   }    
}

Étape 2: Définition de l'axe

Définissez les axes X et Y du graphique en aires et attribuez-leur des étiquettes. Dans notre exemple, l'axe X représente la zone et l'axe Y représente les poids.

//Defining the x axis               
NumberAxis xAxis = new NumberAxis(0, 12, 3); 
xAxis.setLabel("Area");          
        
//Defining the y axis 
NumberAxis yAxis = new NumberAxis(0, 16, 4); 
yAxis.setLabel("Weight");

Étape 3: Création du diagramme de dispersion

Créez un graphique en courbes en instanciant la classe nommée ScatterChart du forfait javafx.scene.chart. Au constructeur de cette classe, transmettez les objets représentant les axes X et Y créés à l'étape précédente.

//Creating the Scatter chart 
ScatterChart<String, Number> scatterChart = new ScatterChart(xAxis, yAxis);

Étape 4: préparation des données

Instancier le XYChart.Series class et ajoutez les données (une série de coordonnées x et y) à la liste Observable de cette classe comme suit -

//Prepare XYChart.Series objects by setting data 
XYChart.Series series = new XYChart.Series();  
series.getData().add(new XYChart.Data(8, 12)); 
series.getData().add(new XYChart.Data(4, 5.5)); 
series.getData().add(new XYChart.Data(11, 14)); 
series.getData().add(new XYChart.Data(4, 5)); 
series.getData().add(new XYChart.Data(3, 3.5)); 
series.getData().add(new XYChart.Data(6.5, 7));

Étape 5: Ajouter des données au nuage de points

Ajoutez la série de données préparée à l'étape précédente au nuage de points comme suit -

//Setting the data to scatter chart        
scatterChart.getData().addAll(series);

Étape 6: Création d'un objet de groupe

dans le start() , créez un objet de groupe en instanciant la classe nommée Group. Cela appartient au packagejavafx.scene.

Passez l'objet ScatterChart (nœud) créé à l'étape précédente en tant que paramètre au constructeur de la classe Group. Cela devrait être fait afin de l'ajouter au groupe comme suit -

Group root = new Group(scatterChart);

Étape 7: création d'un objet de scène

Créez une scène en instanciant la classe nommée Scene, qui appartient au package javafx.scene. À cette classe, transmettez l'objet Group (root) créé à l'étape précédente.

En plus de l'objet racine, vous pouvez également transmettre deux doubles paramètres représentant la hauteur et la largeur de l'écran, ainsi que l'objet de la classe Group comme suit.

Scene scene = new Scene(group ,600, 300);

Étape 8: Définition du titre de la scène

Vous pouvez définir le titre de la scène à l'aide du setTitle() méthode de la Stageclasse. leprimaryStage est un objet Stage, qui est passé à la méthode start de la classe de scène en tant que paramètre.

En utilisant le primaryStage objet, définissez le titre de la scène comme Sample Application comme suit.

primaryStage.setTitle("Sample Application");

Étape 9: Ajouter une scène à la scène

Vous pouvez ajouter un objet Scene à la scène en utilisant la méthode setScene() de la classe nommée Stage. Ajoutez l'objet Scene préparé aux étapes précédentes à l'aide de cette méthode comme suit.

primaryStage.setScene(scene);

Étape 10: Affichage du contenu de la scène

Affichez le contenu de la scène en utilisant la méthode nommée show() du Stage classe comme suit.

primaryStage.show();

Étape 11: Lancement de l'application

Lancez l'application JavaFX en appelant la méthode statique launch() du Application classe de la méthode principale comme suit.

public static void main(String args[]){   
   launch(args);      
}

Exemple

Le tableau suivant contient des exemples de données tracées entre la surface et le poids.

Surface Poids
8 12
4 5.5
11 14
4 5
3 3,5
6,5 sept

Voici un programme Java qui génère un nuage de points représentant les données ci-dessus à l'aide de JavaFX.

Enregistrez ce code dans un fichier avec le nom ScatterChartExample.java.

import javafx.application.Application; 
import static javafx.application.Application.launch; 
import javafx.scene.Group; 
import javafx.scene.Scene; 
import javafx.stage.Stage; 
import javafx.scene.chart.NumberAxis; 
import javafx.scene.chart.ScatterChart; 
import javafx.scene.chart.XYChart; 
         
public class ScatterChartExample extends Application { 
   @Override 
   public void start(Stage stage) {     
      //Defining the axes               
      NumberAxis xAxis = new NumberAxis(0, 12, 3); 
      xAxis.setLabel("Area");          
        
      NumberAxis yAxis = new NumberAxis(0, 16, 4); 
      yAxis.setLabel("Weight"); 
      
      //Creating the Scatter chart 
      ScatterChart<String, Number> scatterChart = 
      new ScatterChart(xAxis, yAxis);         
         
      //Prepare XYChart.Series objects by setting data 
      XYChart.Series series = new XYChart.Series();  
      series.getData().add(new XYChart.Data(8, 12)); 
      series.getData().add(new XYChart.Data(4, 5.5)); 
      series.getData().add(new XYChart.Data(11, 14)); 
      series.getData().add(new XYChart.Data(4, 5)); 
      series.getData().add(new XYChart.Data(3, 3.5)); 
      series.getData().add(new XYChart.Data(6.5, 7));  
                
      //Setting the data to scatter chart        
      scatterChart.getData().addAll(series); 
         
      //Creating a Group object  
      Group root = new Group(scatterChart); 
         
      //Creating a scene object 
      Scene scene = new Scene(root, 600, 400);  
      
      //Setting title to the Stage 
      stage.setTitle("Scatter Chart"); 
         
      //Adding scene to the stage 
      stage.setScene(scene); 
         
      //Displaying the contents of the stage 
      stage.show(); 
   } 
   public static void main(String args[]){ 
      launch(args); 
   } 
}

Compilez et exécutez le fichier java enregistré à partir de l'invite de commande à l'aide des commandes suivantes.

javac ScatterChartExample.java 
java ScatterChartExample

Lors de l'exécution, le programme ci-dessus génère une fenêtre JavaFX affichant un nuage de points comme indiqué ci-dessous.