JavaFX - 气泡图



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

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

Bubble Chart

JavaFX 中的气泡图

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

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

步骤 1:定义轴

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

public class ClassName extends Application {  
   @Override     
   public void start(Stage primaryStage) throws Exception {
      //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");
   }    
 }

步骤 2:创建气泡图

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

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

步骤 3:准备数据

实例化 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)); 

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

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

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

步骤 5:创建 Group 对象

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

将上一步中创建的气泡图(节点)对象作为参数传递给 Group 类的构造函数。这应该按如下方式完成,以便将其添加到组中:

Group root = new Group(bubbleChart);

步骤 6:启动应用程序

最后,按照以下步骤正确启动应用程序:

  • 首先,通过将 Group 对象作为参数值传递给其构造函数来实例化名为 Scene 的类。您可以将应用程序屏幕的尺寸作为可选参数传递给此构造函数。

  • 然后,使用 Stage 类的 setTitle() 方法设置舞台的标题。

  • 现在,使用名为 Stage 的类的 setScene() 方法将 Scene 对象添加到舞台。

  • 使用名为 show() 的方法显示场景的内容。

  • 最后,使用 launch() 方法启动应用程序。

示例

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

体重
年龄
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 --module-path %PATH_TO_FX% --add-modules javafx.controls BubbleChartExample.java 
java --module-path %PATH_TO_FX% --add-modules javafx.controls BubbleChartExample

输出

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

Bubblechart Example

示例

下表显示了 1970 年至 2014 年某地区学校的数量。

年份 学校数量
1970 15
1980 30
1990 60
2000 120
2013 240
2014 300

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

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

import javafx.application.Application; 
import javafx.scene.Group; 
import javafx.scene.Scene; 
import javafx.stage.Stage; 
import javafx.scene.chart.BubbleChart; 
import javafx.scene.chart.NumberAxis; 
import javafx.scene.chart.XYChart; 
         
public class BubbleChartSchools extends Application { 
   @Override 
   public void start(Stage stage) {
      //Defining the x axis             
      NumberAxis xAxis = new NumberAxis(1960, 2020, 10); 
      xAxis.setLabel("Years"); 
        
      //Defining the y axis   
      NumberAxis yAxis = new NumberAxis(20, 320, 20); 
      yAxis.setLabel("No.of schools"); 
        
      //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("No of schools in an year"); 
      // Add a third coordinate representing the radius of bubble
      series.getData().add(new XYChart.Data(1970, 25, 1)); 
      series.getData().add(new XYChart.Data(1980, 30, 2)); 
      series.getData().add(new XYChart.Data(1990, 60, 3)); 
      series.getData().add(new XYChart.Data(2000, 120, 4)); 
      series.getData().add(new XYChart.Data(2013, 240, 5)); 
      series.getData().add(new XYChart.Data(2014, 300, 6)); 
            
      //Setting the data to bubble 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 --module-path %PATH_TO_FX% --add-modules javafx.controls BubbleChartSchools.java 
java --module-path %PATH_TO_FX% --add-modules javafx.controls BubbleChartSchools

输出

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

Bubblechart Example
广告