餅形圖

PieChart 類以圓形的形式繪製資料,並將其劃分為切片。每個切片代表特定值的百分比(部分)。餅圖資料包含在 PieChart.Data 物件中。每個 PieChart.Data 物件都有兩個欄位:餅圖片段的名稱及其對應的值。

建構函式

要建立餅圖,我們需要建立 PieChart 類的物件。我們處理了兩個施工人員。其中一個建立一個空圖表,除非使用 setData 方法設定資料,否則不會顯示任何內容:

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

第二個需要傳遞 PieChart.Data 作為引數。

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

資料

餅圖切片的值不一定必須總和為 100,因為切片大小將與所有值的總和成比例地計算。

資料條目新增到列表的順序將決定它們在圖表上的位置。預設情況下,它們順時針放置,但這種行為可以顛倒過來:

pieChart.setClockwise(false);

以下示例建立一個簡單的餅圖:

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

輸出:

StackOverflow 文件

互動式餅圖

預設情況下,PieChart 不處理任何事件,但可以更改此行為,因為每個餅圖片段都是 JavaFX Node

在下面的示例中,我們初始化資料,將其分配給圖表,然後我們迭代資料集,向每個切片新增工具提示,以便通常隱藏的值可以呈現給使用者。

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