JavaFX Bar Chart

JavaFX Bar Chart.

Dans ce tutoriel nous allons apprendre le graphique a barre, un graphique à deux axes avec des barres rectangulaires qui peuvent être verticales ou horizontales.

La longueur de chaque barre représente une valeur particulière que présente le graphique. De manière général, les graphiques à barres sont utilisés pour afficher des données discrètes.

Création d’un graphique à barres (JavaFX Bar Chart)

Pour créer un graphique à barres dans votre application JavaFX, il suffit de créez deux axes et instanciez la classe BarChar de la maniere suivante.

 CategoryAxis xAxis = new CategoryAxis();
 NumberAxis yAxis = new NumberAxis();
 BarChart<String,Number> bc = new BarChart<String,Number>(xAxis,yAxis);

Maintenant définissez la série de données et affectez les données au graphique.

XYChart.Series<String, Number> series1 = new XYChart.Series<>(); 
series1.setName("Langage de Programmation"); 
series1.getData().add(new XYChart.Data<>("JAVA", 1.0)); 
series1.getData().add(new XYChart.Data<>("PHP", 3.0)); 
series1.getData().add(new XYChart.Data<>("C++", 5.0)); 
series1.getData().add(new XYChart.Data<>("PYTHON", 5.0)); 
bc.getData().add(series1);

Voici le code complet d’un graphique à barres.

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.stage.Stage;

import java.io.IOException;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.chart.BarChart;
import javafx.scene.chart.CategoryAxis;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.XYChart;
import javafx.stage.Stage;

public class BarChartExemple extends Application {
    final static String php = "PHP";
    final static String java = "JAVA";
    final static String python = "PYTHON";
    final static String c = "C++";
    final static String js = "JAVASCRYPT";

    @Override
    public void start(Stage stage) {
        stage.setTitle("Bar Chart Exemple");
        final CategoryAxis xAxis = new CategoryAxis();
        final NumberAxis yAxis = new NumberAxis();
        final BarChart<String, Number> bc =
                new BarChart<String, Number>(xAxis, yAxis);
        bc.setTitle("Langage de programmation");
        xAxis.setLabel("Langage");
        yAxis.setLabel("Valeur");

        XYChart.Series series1 = new XYChart.Series();
        series1.setName("2006");
        series1.getData().add(new XYChart.Data(php, 25601.34));
        series1.getData().add(new XYChart.Data(python, 20148.82));
        series1.getData().add(new XYChart.Data(js, 10000));
        series1.getData().add(new XYChart.Data(java, 35407.15));
        series1.getData().add(new XYChart.Data(c, 12000));

        XYChart.Series series2 = new XYChart.Series();
        series2.setName("2008");
        series2.getData().add(new XYChart.Data(php, 57401.85));
        series2.getData().add(new XYChart.Data(python, 41941.19));
        series2.getData().add(new XYChart.Data(js, 45263.37));
        series2.getData().add(new XYChart.Data(java, 117320.16));
        series2.getData().add(new XYChart.Data(c, 14845.27));

        XYChart.Series series3 = new XYChart.Series();
        series3.setName("2010");
        series3.getData().add(new XYChart.Data(php, 45000.65));
        series3.getData().add(new XYChart.Data(python, 44835.76));
        series3.getData().add(new XYChart.Data(js, 18722.18));
        series3.getData().add(new XYChart.Data(java, 17557.31));
        series3.getData().add(new XYChart.Data(c, 92633.68));

        Scene scene = new Scene(bc, 800, 600);
        bc.getData().addAll(series1, series2, series3);
        stage.setScene(scene);
        stage.show();
    }

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

Notez que la méthode setTickLabelRotation est appelée sur l’axe horizontal pour faire pivoter les étiquettes et faciliter la lecture des légendes des valeurs.

Voici le rendu de notre code.

JavaFX Bar Chart
graphique à barres

Graphique à barres horizontales


Il est possible de modifier l’orientation du graphique à barres de la verticale à l’horizontale en définissant la catégorie pour l’axe vertical. Déclarez l’axe horizontal du NumberAxistype et l’axe vertical du CategoryAxistype tout en modifiant la déclaration de l’objet BarChat.

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.chart.BarChart;
import javafx.scene.chart.CategoryAxis;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.XYChart;
import javafx.stage.Stage;

public class BarChartExemple extends Application {
    final static String php = "PHP";
    final static String java = "JAVA";
    final static String python = "PYTHON";
    final static String c = "C++";
    final static String js = "JAVASCRYPT";

    @Override
    public void start(Stage stage) {
        stage.setTitle("Bar Chart Exemple");
        final NumberAxis xAxis = new NumberAxis();
        final CategoryAxis yAxis = new CategoryAxis();
        final BarChart<Number, String> bc =
                new BarChart<Number, String>(xAxis, yAxis);
        bc.setTitle("Country Summary");
        xAxis.setLabel("Value");
        xAxis.setTickLabelRotation(90);
        yAxis.setLabel("Country");

        XYChart.Series series1 = new XYChart.Series();
        series1.setName("2006");
        series1.getData().add(new XYChart.Data(25601.34, php));
        series1.getData().add(new XYChart.Data(20148.82, python));
        series1.getData().add(new XYChart.Data(10000, js));
        series1.getData().add(new XYChart.Data(35407.15, java));
        series1.getData().add(new XYChart.Data(12000, c));

        XYChart.Series series2 = new XYChart.Series();
        series2.setName("2008");
        series2.getData().add(new XYChart.Data(57401.85, php));
        series2.getData().add(new XYChart.Data(41941.19, python));
        series2.getData().add(new XYChart.Data(45263.37, js));
        series2.getData().add(new XYChart.Data(117320.16, java));
        series2.getData().add(new XYChart.Data(14845.27, c));

        XYChart.Series series3 = new XYChart.Series();
        series3.setName("2010");
        series3.getData().add(new XYChart.Data(45000.65, php));
        series3.getData().add(new XYChart.Data(44835.76, python));
        series3.getData().add(new XYChart.Data(18722.18, js));
        series3.getData().add(new XYChart.Data(17557.31, java));
        series3.getData().add(new XYChart.Data(92633.68, c));

        Scene scene = new Scene(bc, 800, 600);
        bc.getData().addAll(series1, series2, series3);
        stage.setScene(scene);
        stage.show();
    }

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

Laisser un commentaire