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.
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);
}
}