Suche…


Kuchendiagramm

Die PieChart Klasse zeichnet Daten in Form eines Kreises, der in PieChart unterteilt ist. Jedes Segment repräsentiert einen Prozentsatz (Teil) für einen bestimmten Wert. Die Kreisdiagrammdaten werden in PieChart.Data Objekten eingeschlossen. Jedes PieChart.Data Objekt hat zwei Felder: den Namen des PieChart.Data und den entsprechenden Wert.

Konstrukteure

Um ein Kreisdiagramm zu erstellen, müssen Sie das Objekt der PieChart Klasse PieChart . Zwei Konstrukteure stehen uns zur Verfügung. Einer erstellt ein leeres Diagramm, in dem nichts angezeigt wird, es sei denn, die Daten werden mit der setData Methode festgelegt:

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

Die zweite erfordert, dass eine ObservableList von PieChart.Data als Parameter übergeben wird.

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

Daten

Die Werte der Kreissegmente müssen nicht notwendigerweise 100 sein, da die Schnittgröße proportional zur Summe aller Werte berechnet wird.

Die Reihenfolge, in der die Dateneinträge der Liste hinzugefügt werden, bestimmt deren Position im Diagramm. Standardmäßig werden sie im Uhrzeigersinn verlegt. Dieses Verhalten kann jedoch umgekehrt werden:

pieChart.setClockwise(false);

Beispiel

Das folgende Beispiel erstellt ein einfaches Kreisdiagramm:

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

Ausgabe:

Ergebnis

Interaktives Kreisdiagramm

Standardmäßig verarbeitet PieChart keine Ereignisse. Dieses Verhalten kann jedoch geändert werden, da jeder Kreisabschnitt ein JavaFX- Node .

In dem folgenden Beispiel initialisieren wir die Daten, weisen sie dem Diagramm zu und durchlaufen dann den Datensatz, indem jedem Slice QuickInfos hinzugefügt werden, damit die normalerweise verborgenen Werte dem Benutzer angezeigt werden können.

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

Liniendiagramm

Die LineChart Klasse stellt die Daten als eine Reihe von Datenpunkten dar, die mit geraden Linien verbunden sind. Jeder Datenpunkt wird in ein XYChart.Data Objekt eingeschlossen und die Datenpunkte werden in XYChart.Series gruppiert.

Jedes XYChart.Data Objekt hat zwei Felder, auf die mit getXValue und getYValue zugegriffen werden getXValue , die einem x- und einem y-Wert in einem Diagramm entsprechen.

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

Äxte

Bevor wir ein LineChart erstellen, LineChart wir seine Achsen definieren. Der Standardkonstruktor ohne Argumente einer NumberAxis Klasse erstellt beispielsweise eine Auto-Ranging-Achse, die NumberAxis verwendet werden kann und keine weitere Konfiguration erfordert.

Axis xAxis = new NumberAxis();

Beispiel

Im folgenden Beispiel erstellen wir zwei Datenreihen, die in demselben Diagramm angezeigt werden. Die Beschriftungen, Bereiche und Tick-Werte der Achsen werden explizit definiert.

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

Ausgabe:

Liniendiagramm



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow