Javafx-bubble-chart
JavaFX-バブルチャート
バブルチャートは、3次元データを植えるために使用されます。 3番目の次元は、バブルのサイズ(半径)で表されます。
以下は、完了した作業を示すバブルチャートです。
JavaFXでは、バブルチャートは BubbleChart という名前のクラスで表されます。 このクラスは、パッケージ javafx.scene.chart に属します。 このクラスをインスタンス化することにより、JavaFXでBubbleChartノードを作成できます。
バブルチャートを生成する手順
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* クラスをインスタンス化し、次のようにこのクラスのObservableリストにデータ(一連のx、y座標)を追加します-
//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:グループオブジェクトの作成
- start()メソッドで、Groupという名前のクラスをインスタンス化してグループオブジェクトを作成します。 これはパッケージ *javafx.scene に属します。
前の手順で作成したBubbleChart(ノード)オブジェクトをパラメーターとしてGroupクラスのコンストラクターに渡します。 これは、次のようにグループに追加するために行う必要があります-
Group root = new Group(bubbleChart);
ステップ7:シーンオブジェクトの作成
パッケージ javafx.scene に属する Scene という名前のクラスをインスタンス化して、シーンを作成します。 このクラスに、前の手順で作成したGroupオブジェクト( root )を渡します。
ルートオブジェクトに加えて、画面の高さと幅を表す2つのdoubleパラメータを、Groupクラスのオブジェクトとともに次のように渡すこともできます。
Scene scene = new Scene(group ,600, 300);
ステップ8:ステージのタイトルを設定する
*Stage* クラスの* setTitle()*メソッドを使用して、ステージにタイトルを設定できます。 *primaryStage* はStageオブジェクトであり、シーンクラスのstartメソッドにパラメーターとして渡されます。
*primaryStage* オブジェクトを使用して、シーンのタイトルを次のように *Sample Application* として設定します。
primaryStage.setTitle("Sample Application");
ステップ9:ステージにシーンを追加する
*Stage* という名前のクラスの* setScene()*メソッドを使用して、Sceneオブジェクトをステージに追加できます。 次の方法を使用して、前の手順で準備したSceneオブジェクトを追加します。
primaryStage.setScene(scene);
ステップ10:ステージのコンテンツを表示する
次のように Stage クラスの* show()*という名前のメソッドを使用して、シーンのコンテンツを表示します。
primaryStage.show();
ステップ11:アプリケーションの起動
次のように、メインメソッドから Application クラスの* launch()*静的メソッドを呼び出して、JavaFXアプリケーションを起動します。
public static void main(String args[]){
launch(args);
}
例
年齢、体重、および作業能力とともにさまざまな人を考えてみましょう。 作業能力は、チャートにバブルとしてプロットされる時間数として扱うことができます。
重量
AGE
30
40
50
60
70
80
10
4
WORK
25
5
40
6
55
8
70
9
85
15
以下は、JavaFXを使用して上記のデータを示すバブルチャートを生成するJavaプログラムです。
このコードを 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ウィンドウを生成します。