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
廣告

© . All rights reserved.