餅形圖
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);
}
}
輸出:
互動式餅圖
預設情況下,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);
});