Zoeken…


Cirkeldiagram

De klasse PieChart tekent gegevens in de vorm van een cirkel die is verdeeld in segmenten. Elk segment vertegenwoordigt een percentage (deel) voor een bepaalde waarde. De cirkeldiagramgegevens zijn verpakt in PieChart.Data objecten. Elk PieChart.Data object heeft twee velden: de naam van het taartpunt en de bijbehorende waarde.

constructors

Om een cirkeldiagram te maken, moeten we het object van de klasse PieChart . Twee constructeurs worden ons ter beschikking gesteld. Een van hen maakt een lege grafiek die niets weergeeft, tenzij de gegevens zijn ingesteld met de methode setData :

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

En de tweede vereist een ObservableList van PieChart.Data worden doorgegeven als een parameter.

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

Gegevens

De waarden van de taartpunten hoeven niet noodzakelijkerwijs maximaal 100 te zijn, omdat de schijfgrootte wordt berekend in verhouding tot de som van alle waarden.

De volgorde waarin de gegevensinvoer aan de lijst wordt toegevoegd, bepaalt hun positie op de kaart. Standaard worden ze met de klok mee gelegd, maar dit gedrag kan worden omgekeerd:

pieChart.setClockwise(false);

Voorbeeld

In het volgende voorbeeld wordt een eenvoudig cirkeldiagram gemaakt:

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

Output:

Resultaat

Interactief cirkeldiagram

PieChart verwerkt standaard geen gebeurtenissen, maar dit gedrag kan worden gewijzigd omdat elk segment een JavaFX- Node .

In het onderstaande voorbeeld initialiseren we de gegevens, wijzen deze toe aan de grafiek en herhalen we de gegevensset door tooltips toe te voegen aan elk segment, zodat de normaal verborgen waarden aan de gebruiker kunnen worden gepresenteerd.

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

Lijngrafiek

De klasse LineChart presenteert de gegevens als een reeks gegevenspunten verbonden met rechte lijnen. Elk gegevenspunt is verpakt in XYChart.Data object en de gegevenspunten zijn gegroepeerd in XYChart.Series .

Elk XYChart.Data object heeft twee velden die toegankelijk zijn met getXValue en getYValue , die overeenkomen met een x- en ay-waarde in een grafiek.

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

as

Voordat we een LineChart , moeten we de assen ervan definiëren. De standaardconstructor zonder argument van een klasse NumberAxis maakt bijvoorbeeld een automatisch bereikende as die klaar is voor gebruik en geen verdere configuratie vereist.

Axis xAxis = new NumberAxis();

Voorbeeld

In het volledige voorbeeld hieronder maken we twee reeksen gegevens die op dezelfde grafiek worden weergegeven. De labels, bereiken en tikwaarden van de assen worden expliciet gedefinieerd.

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

Output:

Lijngrafiek



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow