Recherche…


Camembert

La classe PieChart dessine des données sous la forme d'un cercle divisé en tranches. Chaque tranche représente un pourcentage (partie) pour une valeur particulière. Les données du graphique en PieChart.Data sont PieChart.Data dans des objets PieChart.Data . Chaque objet PieChart.Data a deux champs: le nom de la tranche et sa valeur correspondante.

Constructeurs

Pour créer un graphique en secteurs, nous devons créer l'objet de la classe PieChart . Deux constructeurs sont à notre disposition. L'un d'eux crée un graphique vide qui n'affichera rien à moins que les données ne soient définies avec la méthode setData :

PieChart pieChart = new PieChart(); // Creates an empty pie chart

Et le second nécessite une ObservableList de PieChart.Data à transmettre en paramètre.

ObservableList<PieChart.Data> valueList = FXCollections.observableArrayList(
            new PieChart.Data("Cats", 50),
            new PieChart.Data("Dogs", 50));
PieChart pieChart(valueList); // Creates a chart with the given data

Les données

Les valeurs des tranches ne doivent pas nécessairement totaliser 100, car la taille de la tranche sera calculée proportionnellement à la somme de toutes les valeurs.

L'ordre dans lequel les entrées de données sont ajoutées à la liste déterminera leur position sur le graphique. Par défaut, ils sont disposés dans le sens des aiguilles d'une montre, mais ce comportement peut être inversé:

pieChart.setClockwise(false);

Exemple

L'exemple suivant crée un graphique circulaire simple:

import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.chart.PieChart;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;

public class Main extends Application {

@Override
public void start(Stage primaryStage) {
    Pane root = new Pane();
    ObservableList<PieChart.Data> valueList = FXCollections.observableArrayList(
            new PieChart.Data("Android", 55),
            new PieChart.Data("IOS", 33),
            new PieChart.Data("Windows", 12));
    // create a pieChart with valueList data.
    PieChart pieChart = new PieChart(valueList);
    pieChart.setTitle("Popularity of Mobile OS");
    //adding pieChart to the root.
    root.getChildren().addAll(pieChart);
    Scene scene = new Scene(root, 450, 450);

    primaryStage.setTitle("Pie Chart Demo");
    primaryStage.setScene(scene);
    primaryStage.show();
}

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

Sortie:

Résultat

Graphique à secteurs interactif

Par défaut, PieChart ne gère aucun événement, mais ce comportement peut être modifié car chaque segment est un Node JavaFX.

Dans l'exemple ci-dessous, nous initialisons les données, nous les affectons au graphique, puis nous parcourons l'ensemble de données en ajoutant des info-bulles à chaque tranche, afin que les valeurs, normalement masquées, puissent être présentées à l'utilisateur.

ObservableList<PieChart.Data> valueList = FXCollections.observableArrayList(
            new PieChart.Data("Nitrogen", 7809),
            new PieChart.Data("Oxygen", 2195),
            new PieChart.Data("Other", 93));
    
PieChart pieChart = new PieChart(valueList);
pieChart.setTitle("Air composition");

pieChart.getData().forEach(data -> {
    String percentage = String.format("%.2f%%", (data.getPieValue() / 100));
    Tooltip toolTip = new Tooltip(percentage);
    Tooltip.install(data.getNode(), toolTip);
});

Graphique en ligne

La classe LineChart présente les données sous la forme d'une série de points de données connectés par des lignes droites. Chaque point de données est XYChart.Data dans XYChart.Data objet XYChart.Data et les points de données sont regroupés dans XYChart.Series .

Chaque objet XYChart.Data possède deux champs, accessibles via getXValue et getYValue , correspondant à une valeur x et ay sur un graphique.

XYChart.Data data = new XYChart.Data(1,3);
System.out.println(data.getXValue()); // Will print 1
System.out.println(data.getYValue()); // Will print 3

Les axes

Avant de créer un LineChart nous devons définir ses axes. Par exemple, le constructeur par défaut sans argument d'une classe NumberAxis créera un axe de mesure automatique prêt à l'emploi et ne nécessitant aucune configuration supplémentaire.

Axis xAxis = new NumberAxis();

Exemple

Dans l'exemple complet ci-dessous, nous créons deux séries de données qui seront affichées sur le même graphique. Les étiquettes, les plages et les valeurs de tick des axes sont explicitement définies.

@Override
public void start(Stage primaryStage) {
    Pane root = new Pane();

    // Create empty series
    ObservableList<XYChart.Series> seriesList = FXCollections.observableArrayList();

    // Create data set for the first employee and add it to the series
    ObservableList<XYChart.Data> aList = FXCollections.observableArrayList(
            new XYChart.Data(0, 0),
            new XYChart.Data(2, 6),
            new XYChart.Data(4, 37),
            new XYChart.Data(6, 82),
            new XYChart.Data(8, 115)
    );
    seriesList.add(new XYChart.Series("Employee A", aList));

    // Create data set for the second employee and add it to the series
    ObservableList<XYChart.Data> bList = FXCollections.observableArrayList(
            new XYChart.Data(0, 0),
            new XYChart.Data(2, 43),
            new XYChart.Data(4, 51),
            new XYChart.Data(6, 64),
            new XYChart.Data(8, 92)
    );
    seriesList.add(new XYChart.Series("Employee B", bList));

    // Create axes
    Axis xAxis = new NumberAxis("Hours worked", 0, 8, 1);
    Axis yAxis = new NumberAxis("Lines written", 0, 150, 10);
    
    LineChart chart = new LineChart(xAxis, yAxis, seriesList);

    root.getChildren().add(chart);

    Scene scene = new Scene(root);
    primaryStage.setScene(scene);
    primaryStage.show();
}

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

Sortie:

Graphique en ligne



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow