JavaFX - 散点图



散点图是一种图表类型,它使用笛卡尔平面中绘制的两个变量的值。它通常用于找出两个变量之间的关系。

以下是面积和重量之间绘制的散点图。

Scatter Chart

JavaFX 中的散点图

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

要生成 JavaFX 中的散点图,请按照以下步骤操作。

步骤 1:定义轴

定义面积图的 X 轴和 Y 轴,并在 Application 类的 start() 方法中为其设置标签。在我们的示例中,X 轴表示面积,Y 轴表示重量。

public class ClassName extends Application {  
   @Override     
   public void start(Stage primaryStage) throws Exception {
      //Defining the x axis               
      NumberAxis xAxis = new NumberAxis(0, 12, 3); 
      xAxis.setLabel("Area");          
        
      //Defining the y axis 
      NumberAxis yAxis = new NumberAxis(0, 16, 4); 
      yAxis.setLabel("Weight");
   }    
}

步骤 2:创建散点图

通过实例化名为 ScatterChart 的类(属于 javafx.scene.chart 包)来创建折线图。将表示在上一步骤中创建的 X 轴和 Y 轴的对象传递给此类的构造函数。

//Creating the Scatter chart 
ScatterChart<String, Number> scatterChart = new ScatterChart(xAxis, yAxis); 

步骤 3:准备数据

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

//Prepare XYChart.Series objects by setting data 
XYChart.Series series = new XYChart.Series();  
series.getData().add(new XYChart.Data(8, 12)); 
series.getData().add(new XYChart.Data(4, 5.5)); 
series.getData().add(new XYChart.Data(11, 14)); 
series.getData().add(new XYChart.Data(4, 5)); 
series.getData().add(new XYChart.Data(3, 3.5)); 
series.getData().add(new XYChart.Data(6.5, 7)); 

步骤 4:将数据添加到散点图

将上一步骤中准备好的数据系列添加到散点图中,如下所示:

//Setting the data to scatter chart        
scatterChart.getData().addAll(series);

步骤 5:创建 Group 对象

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

将上一步骤中创建的 ScatterChart(节点)对象作为参数传递给 Group 类的构造函数。这应该这样做是为了将其添加到组中,如下所示:

Group root = new Group(scatterChart);

步骤 6:启动应用程序

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

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

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

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

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

  • 最后,应用程序在 launch() 方法的帮助下启动。

示例

下表包含面积和重量之间绘制的样本数据。

面积 重量
8 12
4 5.5
11 14
4 5
3 3.5
6.5 7

以下是一个 Java 程序,它使用 JavaFX 生成一个描绘上述数据的散点图。

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

import javafx.application.Application; 
import static javafx.application.Application.launch; 
import javafx.scene.Group; 
import javafx.scene.Scene; 
import javafx.stage.Stage; 
import javafx.scene.chart.NumberAxis; 
import javafx.scene.chart.ScatterChart; 
import javafx.scene.chart.XYChart; 
         
public class ScatterChartExample extends Application { 
   @Override 
   public void start(Stage stage) {     
      //Defining the axes               
      NumberAxis xAxis = new NumberAxis(0, 12, 3); 
      xAxis.setLabel("Area");          
        
      NumberAxis yAxis = new NumberAxis(0, 16, 4); 
      yAxis.setLabel("Weight"); 
      
      //Creating the Scatter chart 
      ScatterChart<String, Number> scatterChart = 
      new ScatterChart(xAxis, yAxis);         
         
      //Prepare XYChart.Series objects by setting data 
      XYChart.Series series = new XYChart.Series();  
      series.getData().add(new XYChart.Data(8, 12)); 
      series.getData().add(new XYChart.Data(4, 5.5)); 
      series.getData().add(new XYChart.Data(11, 14)); 
      series.getData().add(new XYChart.Data(4, 5)); 
      series.getData().add(new XYChart.Data(3, 3.5)); 
      series.getData().add(new XYChart.Data(6.5, 7));  
                
      //Setting the data to scatter chart        
      scatterChart.getData().addAll(series); 
         
      //Creating a Group object  
      Group root = new Group(scatterChart); 
         
      //Creating a scene object 
      Scene scene = new Scene(root, 600, 400);  
      
      //Setting title to the Stage 
      stage.setTitle("Scatter 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 ScatterChartExample.java 
java --module-path %PATH_TO_FX% --add-modules javafx.controls ScatterChartExample

输出

执行后,上述程序生成一个 JavaFX 窗口,其中显示了一个散点图,如下所示。

Scatter Example

示例

下表说明了每月销售的电子产品数量。

产品 销售数量(每月)
笔记本电脑 176
电视 30
手机 540
智能手表 250
MacBook 60

以下是一个 Java 程序,它使用 JavaFX 生成一个描绘上述数据的散点图。

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

import javafx.application.Application; 
import static javafx.application.Application.launch; 
import javafx.scene.Group; 
import javafx.scene.Scene; 
import javafx.stage.Stage; 
import javafx.scene.chart.NumberAxis; 
import javafx.scene.chart.CategoryAxis;
import javafx.scene.chart.ScatterChart; 
import javafx.scene.chart.XYChart; 
         
public class ScatterChartExample extends Application { 
   @Override 
   public void start(Stage stage) {     
      //Defining the axes               
      CategoryAxis xAxis = new CategoryAxis(); 
      xAxis.setLabel("Items");          
        
      NumberAxis yAxis = new NumberAxis(); 
      yAxis.setLabel("Sales (per month)"); 
      
      //Creating the Scatter chart 
      ScatterChart scatterChart = 
      new ScatterChart(xAxis, yAxis);         
         
      //Prepare XYChart.Series objects by setting data 
      XYChart.Series series = new XYChart.Series(); 
      series.setName("Items sold per month"); 
        
      series.getData().add(new XYChart.Data("Laptop", 176)); 
      series.getData().add(new XYChart.Data("TV", 30)); 
      series.getData().add(new XYChart.Data("Mobile", 540)); 
      series.getData().add(new XYChart.Data("Smart Watch", 250)); 
      series.getData().add(new XYChart.Data("MacBook", 60));  
                
      //Setting the data to scatter chart        
      scatterChart.getData().addAll(series); 
         
      //Creating a Group object  
      Group root = new Group(scatterChart); 
         
      //Creating a scene object 
      Scene scene = new Scene(root, 600, 400);  
      
      //Setting title to the Stage 
      stage.setTitle("Scatter 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 ScatterChartSales.java 
java --module-path %PATH_TO_FX% --add-modules javafx.controls ScatterChartSales

输出

执行后,上述程序生成一个 JavaFX 窗口,其中显示了一个散点图,如下所示。

Scatter Example
广告