JavaFX - 饼图

饼图将值表示为具有不同颜色的圆形切片。这些切片带有标签,并且每个切片对应的值都显示在图表中。

以下是饼图,描绘了某个实例中各个公司的移动销售情况。

Mobilesales 饼图

在 JavaFX 中,饼图由名为 PieChart 的类表示。此类属于包 javafx.scene.chart

通过实例化此类,您可以在 JavaFX 中创建一个 PieChart 节点。

此类有 5 个属性,如下所示 −

  • clock − 这是一个布尔运算符;将此运算符设置为 true 时,饼图中的数据切片将从饼图的起始角度开始顺时针排列。

  • data − 这表示一个 ObservableList 对象,其中包含饼图的数据。

  • labelLineLength −一个整数运算符,表示连接饼图标签和切片的线的长度。

  • labelsVisible − 这是一个布尔运算符;如果将此运算符设置为 true,则会绘制饼图的标签。默认情况下,此运算符设置为 true。

  • startAngle − 这是一个双精度类型运算符,表示开始第一个饼图切片的角度。

要生成饼图,请准备一个 ObservableList 对象,如以下代码块所示 −

	//准备 ObservbleList 对象
    ObservableList<PieChart.Data> pieChartData = FXCollections.observableArrayList(
    new PieChart.Data("Iphone 5S", 13),
    new PieChart.Data("Samsung Grand", 25),
    new PieChart.Data("MOTO G", 10),
    new PieChart.Data("Nokia Lumia", 22));

准备好 ObservableList 对象后,将其作为参数传递给类 PieChart 的构造函数,如下所示 −

//创建饼图
PieChart pieChart = new PieChart(pieChartData);

或者,使用 javafx.scene.chart 包中名为 PieChart 的类中名为 setData() 的方法。

pieChart.setData(pieChartData);

生成饼图的步骤

要在 JavaFX 中生成 PieChart,请按照以下步骤操作。

步骤 1:创建类

创建一个 Java 类并继承 javafx.application 包中的 Application 类,并按如下方式实现该类的 start() 方法。

public class ClassName extends Application {  
   @Override     
   public void start(Stage primaryStage) throws Exception {     
   }    
}

步骤 2:准备 ObservableList 对象

通过传递饼图的数据来准备接口 ObservableList 对象,如下所示 −

ObservableList<PieChart.Data> pieChartData = FXCollections.observableArrayList(
new PieChart.Data("Iphone 5S", 13),
new PieChart.Data("Samsung Grand", 25),
new PieChart.Data("MOTO G", 10),
new PieChart.Data("Nokia Lumia", 22));

步骤 3:创建 PieChart 对象

通过传递 ObservableList 对象创建 PieChart,如下所示。

//创建饼图
PieChart pieChart = new PieChart(pieChartData);

步骤 4:设置饼图的标题

使用 PieChart 类的 setTitle() 方法设置饼图的标题。这属于包 javafx.scene.chart

//设置饼图的标题
pieChart.setTitle("Mobile Sales");

步骤 5:顺时针设置切片

将饼图的切片设置为顺时针。这通过将布尔值 true 传递给类 PieChartsetClockwise() 方法来实现。这属于包 javafx.scene.chart

//设置排列数据的方向
pieChart.setClockwise(true);

步骤 6:设置标签线的长度

使用 javafx.scene.chart 包中 PieChart 类的 setLabelLineLength() 方法设置标签线的长度,如下所示 −

//设置标签线的长度
pieChart.setLabelLineLength(50);

步骤 7:设置标签可见

通过将布尔值 true 传递给 PieChart 类的方法 setLabelsVisible(),将饼图的标签设置为可见。这属于包 javafx.scene.chart

//设置饼图的标签可见
pieChart.setLabelsVisible(true);

步骤 8:设置饼图的起始角度

使用类 PieChartsetStartAngle() 方法设置饼图的起始角度。这属于包 javafx.scene.chart

//设置饼图的起始角度
pieChart.setStartAngle(180);

步骤 9:创建组对象

start() 方法中,通过实例化名为 Group 的类来创建组对象。该类属于 javafx.scene 包。

将上一步中创建的 PieChart(节点)对象作为参数传递给 Group 类的构造函数。应按如下方式将其添加到组中 −

Group root = new Group(piechart);

步骤 10:创建场景对象

通过实例化名为 Scene 的类来创建场景,该类属于 javafx.scene 包。将上一步中创建的 Group 对象 (root) 传递给该类。

除了 root 对象之外,您还可以传递两个表示屏幕高度和宽度的双精度参数,以及 Group 类的对象,如下所示。

Scene scene = new Scene(group ,600, 300);

步骤 11:设置舞台(Stage)的标题

您可以使用 Stage 类的 setTitle() 方法将标题设置为舞台(Stage)。primaryStage 是一个舞台(Stage)对象,它作为参数传递给场景类的启动方法。

使用 primaryStage 对象,将场景的标题设置为 Sample Application,如下所示。

primaryStage.setTitle("Sample Application");

步骤 12:将场景添加到舞台(Stage)

您可以使用名为 Stage 的类的方法 setScene() 将场景对象添加到舞台(Stage)。使用此方法添加前面步骤中准备的 Scene 对象,如下所示。

primaryStage.setScene(scene);

步骤 13:显示 Stage 的内容

使用 Stage 类的名为 show() 的方法显示场景的内容,如下所示。

primaryStage.show();

步骤 14:启动应用程序

通过从主方法调用 Application 类的静态方法 launch() 来启动 JavaFX 应用程序,如下所示。

public static void main(String args[]){   
   launch(args);      
}   

示例

下表通过饼图展示了移动设备的销售情况。下表列出了不同的移动设备品牌及其销售量(每日单位数)。

S.No 移动设备品牌 销售量(每日单位数)
1 Iphone 5S 20
2 Samsung Grand 20
3 MOTO G 40
4 Nokia Lumia 10

以下是使用 JavaFX 生成饼图并描绘上述数据的 Java 程序。将此代码保存在名为 PieChartExample.java 的文件中。

import javafx.application.Application; 
import javafx.collections.FXCollections;  
import javafx.collections.ObservableList; 
import javafx.scene.Group; 
import javafx.scene.Scene; 
import javafx.stage.Stage; 
import javafx.scene.chart.PieChart; 
         
public class PieChartExample extends Application {  
   @Override 
   public void start(Stage stage) {
        //准备 ObservbleList 对象
        ObservableList<PieChart.Data> pieChartData = FXCollections.observableArrayList(
        new PieChart.Data("Iphone 5S", 13),
        new PieChart.Data("Samsung Grand", 25),
        new PieChart.Data("MOTO G", 10),
        new PieChart.Data("Nokia Lumia", 22));
        
        //创建饼图
        PieChart pieChart = new PieChart(pieChartData);
        
        //设置饼图的标题
        pieChart.setTitle("Mobile Sales");
        
        //设置数据排列方向
        pieChart.setClockwise(true);
        
        //设置标签线的长度
        pieChart.setLabelLineLength(50);
        
        //设置饼图的标签可见
        pieChart.setLabelsVisible(true);
        
        //设置饼图的起始角度
        pieChart.setStartAngle(180);
        
        //创建一个 Group 对象
        Group root = new Group(pieChart);
        
        //创建一个 Scene 对象
        Scene scene = new Scene(root, 600, 400);
        
        //设置 Stage 的标题
        stage.setTitle("Pie chart");
        
        //将场景添加到舞台(Stage)
        stage.setScene(scene);
        
        //显示舞台(Stage)的内容
        stage.show();
   }  
   public static void main(String args[]){ 
      launch(args); 
   } 
} 

使用以下命令从命令提示符编译并执行保存的 java 文件。

javac PieChartExample.java 
java PieChartExample

执行时,上述程序会生成一个 JavaFX 窗口,其中显示如下所示的饼图。

饼图

javafx_charts.html