Szukaj…


Wykres kołowy

Klasa PieChart rysuje dane w postaci koła podzielonego na plasterki. Każdy plasterek reprezentuje procent (część) dla określonej wartości. Dane wykresu kołowego są pakowane w obiekty PieChart.Data . Każdy obiekt PieChart.Data ma dwa pola: nazwę wycinka kołowego i odpowiadającą mu wartość.

Konstruktory

Aby utworzyć wykres kołowy, musimy utworzyć obiekt klasy PieChart . Do naszej dyspozycji oddano dwóch konstruktorów. Jeden z nich tworzy pusty wykres, który niczego nie wyświetli, chyba że dane zostaną ustawione metodą setData :

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

A drugi wymaga podania ObservableList z PieChart.Data jako parametru.

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

Dane

Wartości wycinków nie muszą sumować się do 100, ponieważ rozmiar wycinka zostanie obliczony proporcjonalnie do sumy wszystkich wartości.

Kolejność dodawania wpisów danych do listy określi ich pozycję na wykresie. Domyślnie są one układane zgodnie z ruchem wskazówek zegara, ale to zachowanie można odwrócić:

pieChart.setClockwise(false);

Przykład

Poniższy przykład tworzy prosty wykres kołowy:

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

Wynik:

Wynik

Interaktywny wykres kołowy

Domyślnie PieChart nie obsługuje żadnych wydarzeń, ale to zachowanie może być zmienione, ponieważ każdy kawałek pie jest JavaFX Node .

W poniższym przykładzie inicjalizujemy dane, przypisujemy je do wykresu, a następnie iterujemy zestaw danych, dodając podpowiedzi do każdego wycinka, aby wartości, które zwykle są ukryte, mogły zostać przedstawione użytkownikowi.

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

Wykres liniowy

Klasa LineChart przedstawia dane jako serię punktów danych połączonych liniami prostymi. Każdy punkt danych jest zawinięty w obiekcie XYChart.Data , a punkty danych są zgrupowane w XYChart.Series .

Każdy obiekt XYChart.Data ma dwa pola, do których można uzyskać dostęp za pomocą getXValue i getYValue , które odpowiadają wartościom xi ay na wykresie.

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

Siekiery

Przed utworzeniem LineChart musimy zdefiniować jego osie. Na przykład domyślny konstruktor bez argumentów klasy NumberAxis utworzy oś automatycznego NumberAxis , która jest gotowa do użycia i nie wymaga dalszej konfiguracji.

Axis xAxis = new NumberAxis();

Przykład

W pełnym poniższym przykładzie tworzymy dwie serie danych, które będą wyświetlane na tym samym wykresie. Etykiety, zakresy i wartości zaznaczenia osi są wyraźnie zdefiniowane.

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

Wynik:

Wykres liniowy



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow