JavaFX - 气泡图



气泡图用于绘制三维数据;第三维将由气泡的大小(半径)表示。

以下是描绘已完成工作的示例气泡图。

Bubble Chart

在 JavaFX 中,气泡图由名为 BubbleChart 的类表示。此类属于 javafx.scene.chart 包。通过实例化此类,您可以在 JavaFX 中创建气泡图节点。

生成气泡图的步骤

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

步骤 1:创建类

创建一个 Java 类并继承 javafx.application 包的 Application 类。您可以如下实现此类的 start() 方法。

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

步骤 2:定义轴

定义气泡图的 X 轴和 Y 轴,并为其设置标签。在我们的示例中,X 轴表示年龄,Y 轴表示体重。而气泡的半径表示已完成的工作。

//Defining the X axis               
NumberAxis xAxis = new NumberAxis(0, 100, 10);        
xAxis.setLabel("Age");  

//Defining Y axis        
NumberAxis yAxis = new NumberAxis(20, 100, 10); 
yAxis.setLabel("Weight");

步骤 3:创建气泡图

通过实例化 javafx.scene.chart 包中名为 BubbleChart 的类来创建气泡图。在该类的构造函数中,传递表示在先前步骤中创建的 X 轴和 Y 轴的对象。

//Creating the Bubble chart 
BubbleChart bubbleChart = new BubbleChart(xAxis, yAxis);

步骤 4:准备数据

实例化 XYChart.Series 类,并将数据(一系列 x 和 y 坐标)添加到该类的 Observable 列表中,如下所示:

//Prepare XYChart.Series objects by setting data        
XYChart.Series series = new XYChart.Series();  
series.setName("work");  

series.getData().add(new XYChart.Data(10,30,4));  
series.getData().add(new XYChart.Data(25,40,5)); 
series.getData().add(new XYChart.Data(40,50,9)); 
series.getData().add(new XYChart.Data(55,60,7));    
series.getData().add(new XYChart.Data(70,70,9));        
series.getData().add(new XYChart.Data(85,80,6)); 

步骤 5:将数据添加到气泡图

将先前步骤中准备的数据系列添加到气泡图中,如下所示:

//Setting the data to bar chart        
bubbleChart.getData().add(series); 

步骤 6:创建 Group 对象

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

将先前步骤中创建的气泡图(节点)对象作为参数传递给 Group 类的构造函数。应执行此操作以将其添加到组中,如下所示:

Group root = new Group(bubbleChart);

步骤 7:创建 Scene 对象

通过实例化名为 Scene 的类来创建一个 Scene,该类属于 javafx.scene 包。在此类中,传递先前步骤中创建的 Group 对象 (root)。

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

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

步骤 8:设置 Stage 的标题

您可以使用 Stage 类的 setTitle() 方法设置 Stage 的标题。primaryStage 是一个 Stage 对象,它作为参数传递给 Scene 类的 start 方法。

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

primaryStage.setTitle("Sample Application");

步骤 9:将 Scene 添加到 Stage

您可以使用名为 Stage 的类的 setScene() 方法将 Scene 对象添加到 Stage。使用以下方法添加在先前步骤中准备的 Scene 对象。

primaryStage.setScene(scene);

步骤 10:显示 Stage 的内容

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

primaryStage.show();

步骤 11:启动应用程序

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

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

示例

让我们考虑不同的人以及他们的年龄、体重和工作能力。工作能力可以视为以图表中的气泡形式绘制的小时数。

体重
年龄
30 40 50 60 70 80
10 4 工作
25 5
40 6
55 8
70 9
85 15

以下是一个 Java 程序,它使用 JavaFX 生成一个气泡图,描绘了以上数据。

将此代码保存在名为 BubbleChartExample.java 的文件中。

import javafx.application.Application; 
import javafx.scene.Group; 
import javafx.scene.Scene; 
import javafx.scene.chart.BubbleChart; 
import javafx.stage.Stage;  
import javafx.scene.chart.NumberAxis; 
import javafx.scene.chart.XYChart; 
         
public class BubbleChartExample extends Application { 
   @Override 
   public void start(Stage stage) {     
      //Defining the axes               
      NumberAxis xAxis = new NumberAxis(0, 100, 10);        
      xAxis.setLabel("Age"); 
        
      NumberAxis yAxis = new NumberAxis(20, 100, 10); 
      yAxis.setLabel("Weight"); 
      
      //Creating the Bubble chart 
      BubbleChart bubbleChart = new BubbleChart(xAxis, yAxis);    
         
      //Prepare XYChart.Series objects by setting data        
      XYChart.Series series = new XYChart.Series();  
      series.setName("work"); 
         
      series.getData().add(new XYChart.Data(10,30,4));  
      series.getData().add(new XYChart.Data(25,40,5)); 
      series.getData().add(new XYChart.Data(40,50,9)); 
      series.getData().add(new XYChart.Data(55,60,7));    
      series.getData().add(new XYChart.Data(70,70,9));        
      series.getData().add(new XYChart.Data(85,80,6));
      
      //Setting the data to bar chart         
      bubbleChart.getData().add(series); 
         
      //Creating a Group object  
      Group root = new Group(bubbleChart); 
         
      //Creating a scene object 
      Scene scene = new Scene(root, 600, 400);  
      
      //Setting title to the Stage 
      stage.setTitle("Bubble Chart"); 
         
      //Adding scene to the stage 
      stage.setScene(scene); 
         
      //Displaying the contents of the stage 
      stage.show();         
   }  
   public static void main(String args[]){ 
      launch(args); 
   } 
}

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

javac BubbleChartExample.java 
java BubbleChartExample

执行后,上述程序将生成一个 JavaFX 窗口,显示如下所示的气泡图。

Bubblechart Example
javafx_charts.htm
广告