Javafx-line-chart

提供:Dev Guides
移動先:案内検索

JavaFX-折れ線グラフ

折れ線グラフまたは折れ線グラフは、直線セグメントで接続された一連のデータポイント(マーカー)として情報を表示します。 折れ線グラフは、同じ時間頻度でデータがどのように変化するかを示します。

以下は、異なる年の学校の数を描いた折れ線グラフです。

折れ線グラフ

JavaFXでは、折れ線グラフは LineChart という名前のクラスで表されます。 このクラスは、パッケージ javafx.scene.chart に属します。 このクラスをインスタンス化することにより、JavaFXでLineChartノードを作成できます。

折れ線グラフを生成する手順

JavaFXで折れ線グラフを生成するには、以下の手順に従う必要があります。

ステップ1:クラスを作成する

Javaクラスを作成し、パッケージ javafx.applicationApplication クラスを継承します。 次に、このクラスの* start()*メソッドを次のように実装できます。

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

ステップ2:軸の定義

折れ線グラフのX軸とY軸を定義し、それらにラベルを設定します。

この例では、X軸は1960年から2020年までの年を表し、10年ごとに大きな目盛りが付けられています。

//Defining X axis
NumberAxis xAxis = new NumberAxis(1960, 2020, 10);
xAxis.setLabel("Years");

//Defining y axis
NumberAxis yAxis = new NumberAxis(0, 350, 50);
yAxis.setLabel("No.of schools");

ステップ3:折れ線グラフの作成

パッケージ javafx.scene.chartLineChart という名前のクラスをインスタンス化して、折れ線グラフを作成します。 このクラスのコンストラクターに、前の手順で作成したX軸とY軸を表すオブジェクトを渡します。

LineChart linechart = new LineChart(xAxis, yAxis);

ステップ4:データの準備

*XYChart.Series* クラスをインスタンス化します。 次に、データ(一連のx、y座標)を次のようにこのクラスのObservableリストに追加します-
XYChart.Series series = new XYChart.Series();
series.setName("No of schools in an year");

series.getData().add(new XYChart.Data(1970, 15));
series.getData().add(new XYChart.Data(1980, 30));
series.getData().add(new XYChart.Data(1990, 60));
series.getData().add(new XYChart.Data(2000, 120));
series.getData().add(new XYChart.Data(2013, 240));
series.getData().add(new XYChart.Data(2014, 300));

ステップ5:折れ線グラフにデータを追加する

次のように折れ線グラフに前の手順で準備されたデータ系列を追加します-

//Setting the data to Line chart
linechart.getData().add(series);

ステップ6:グループオブジェクトの作成

  • start()メソッドで、 *Group という名前のクラスをインスタンス化してグループオブジェクトを作成します。 これはパッケージ javafx.scene に属します。

前のステップで作成したLineChart(ノード)オブジェクトをパラメーターとしてGroupクラスのコンストラクターに渡します。 これは、次のようにグループに追加するために行う必要があります-

Group root = new Group(linechart);

ステップ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);
}

次の表は、1970年から2014年までの地域にあった学校の数を示しています。

Year Number of Schools
1970 15
1980 30
1990 60
2000 120
2013 240
2014 300

以下は、JavaFXを使用して、上記のデータを表す折れ線グラフを生成するJavaプログラムです。

このコードを LineChartExample.java という名前のファイルに保存します。

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.chart.LineChart;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.XYChart;

public class LineChartExample 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   (0, 350, 50);
      yAxis.setLabel("No.of schools");

     //Creating the line chart
      LineChart linechart = new LineChart(xAxis, yAxis);

     //Prepare XYChart.Series objects by setting data
      XYChart.Series series = new XYChart.Series();
      series.setName("No of schools in an year");

      series.getData().add(new XYChart.Data(1970, 15));
      series.getData().add(new XYChart.Data(1980, 30));
      series.getData().add(new XYChart.Data(1990, 60));
      series.getData().add(new XYChart.Data(2000, 120));
      series.getData().add(new XYChart.Data(2013, 240));
      series.getData().add(new XYChart.Data(2014, 300));

     //Setting the data to Line chart
      linechart.getData().add(series);

     //Creating a Group object
      Group root = new Group(linechart);

     //Creating a scene object
      Scene scene = new Scene(root, 600, 400);

     //Setting title to the Stage
      stage.setTitle("Line 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 LineChartExample.java
java LineChartExample

実行時に、上記のプログラムは、以下に示すような折れ線グラフを表示するJavaFXウィンドウを生成します。

折れ線グラフの例