JavaFX - Graphique à barres

Un graphique à barres est utilisé pour représenter des données groupées à l'aide de barres rectangulaires. La longueur de ces barres représente les valeurs. Les barres du graphique à barres peuvent être tracées verticalement ou horizontalement.

Voici un diagramme à barres comparant différentes marques de voitures.

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

Étapes pour générer un graphique à barres

Pour générer un graphique à barres 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 à barres et attribuez-leur des étiquettes. Dans notre exemple, l'axe X représente la catégorie de comparaison et l'axe y représente le score.

//Defining the x axis               
CategoryAxis xAxis = new CategoryAxis();   
        
xAxis.setCategories(FXCollections.<String>observableArrayList(Arrays.asList(
   "Speed", "User rating", "Milage", "Safety"))); 
xAxis.setLabel("category");  

//Defining the y axis 
NumberAxis yAxis = new NumberAxis(); 
yAxis.setLabel("score");

Étape 3: Création du graphique à barres

Créez un graphique en courbes en instanciant la classe nommée BarChart 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 Bar chart 
BarChart<String, Number> barChart = new BarChart<>(xAxis, yAxis);  
barChart.setTitle("Comparison between various cars");

Étape 4: préparation des données

Instancier le XYChart.Series classe 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<String, Number> series1 = new XYChart.Series<>(); 
series1.setName("Fiat"); 
series1.getData().add(new XYChart.Data<>("Speed", 1.0)); 
series1.getData().add(new XYChart.Data<>("User rating", 3.0)); 
series1.getData().add(new XYChart.Data<>("Milage", 5.0)); 
series1.getData().add(new XYChart.Data<>("Safety", 5.0));   

XYChart.Series<String, Number> series2 = new XYChart.Series<>(); 
series2.setName("Audi"); 
series2.getData().add(new XYChart.Data<>("Speed", 5.0)); 
series2.getData().add(new XYChart.Data<>("User rating", 6.0));  

series2.getData().add(new XYChart.Data<>("Milage", 10.0)); 
series2.getData().add(new XYChart.Data<>("Safety", 4.0));  

XYChart.Series<String, Number> series3 = new XYChart.Series<>(); 
series3.setName("Ford"); 
series3.getData().add(new XYChart.Data<>("Speed", 4.0)); 
series3.getData().add(new XYChart.Data<>("User rating", 2.0)); 
series3.getData().add(new XYChart.Data<>("Milage", 3.0)); 
series3.getData().add(new XYChart.Data<>("Safety", 6.0));

Étape 5: Ajouter des données au graphique à barres

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

//Setting the data to bar chart        
barChart.getData().addAll(series1, series2, series3);

É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 BarChart (node), 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(barChart);

É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 Scene 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 la méthode suivante.

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

L'exemple suivant illustre diverses statistiques de voiture à l'aide d'un graphique à barres. Voici une liste des marques de voitures avec leurs différentes caractéristiques, que nous montrerons à l'aide d'un graphique à barres -

Voiture La vitesse Note de l'utilisateur Millage sécurité
Décret 1.0 3.0 5,0 5,0
Audi 5,0 6,0 10,0 4.0
Gué 4.0 2.0 3.0 6,0

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

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

import java.util.Arrays;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.chart.BarChart;
import javafx.scene.chart.CategoryAxis;
import javafx.stage.Stage;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.XYChart;
        
public class BarChartExample extends Application {
   @Override
   public void start(Stage stage) {    
      //Defining the axes              
      CategoryAxis xAxis = new CategoryAxis();  
      xAxis.setCategories(FXCollections.<String>
      observableArrayList(Arrays.asList("Speed", "User rating", "Milage", "Safety")));
      xAxis.setLabel("category");
       
      NumberAxis yAxis = new NumberAxis();
      yAxis.setLabel("score");
     
      //Creating the Bar chart
      BarChart<String, Number> barChart = new BarChart<>(xAxis, yAxis); 
      barChart.setTitle("Comparison between various cars");
        
      //Prepare XYChart.Series objects by setting data       
      XYChart.Series<String, Number> series1 = new XYChart.Series<>();
      series1.setName("Fiat");
      series1.getData().add(new XYChart.Data<>("Speed", 1.0));
      series1.getData().add(new XYChart.Data<>("User rating", 3.0));
      series1.getData().add(new XYChart.Data<>("Milage", 5.0));
      series1.getData().add(new XYChart.Data<>("Safety", 5.0));
        
      XYChart.Series<String, Number> series2 = new XYChart.Series<>();
      series2.setName("Audi");
      series2.getData().add(new XYChart.Data<>("Speed", 5.0));
      series2.getData().add(new XYChart.Data<>("User rating", 6.0));
      series2.getData().add(new XYChart.Data<>("Milage", 10.0));
      series2.getData().add(new XYChart.Data<>("Safety", 4.0));

      XYChart.Series<String, Number> series3 = new XYChart.Series<>();
      series3.setName("Ford");
      series3.getData().add(new XYChart.Data<>("Speed", 4.0));
      series3.getData().add(new XYChart.Data<>("User rating", 2.0));
      series3.getData().add(new XYChart.Data<>("Milage", 3.0));
      series3.getData().add(new XYChart.Data<>("Safety", 6.0));
              
      //Setting the data to bar chart       
      barChart.getData().addAll(series1, series2, series3);
        
      //Creating a Group object 
      Group root = new Group(barChart);
        
      //Creating a scene object
      Scene scene = new Scene(root, 600, 400);

      //Setting title to the Stage
      stage.setTitle("Bar 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 BarChartExample.java 
java BarChartExample

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