2015-06-06

JavaFX: LineChart を使いこなそう (1)

JavaFX ではさまざまなチャートを利用できますが、私は思い存分に、というレベルまで細かい所を使いこなせていません。そこで簡単ないくつかのサンプルをベースにして少しずつ加工してみようと思います。まずは LineChart のベースサンプルを紹介します。参考サイト[1] を参考にしました。

動作環境は次の通りです。

  • OS: Fedora 22 x86_64
  • jdk1.8.0_45-1.8.0_45-fcs.x86_64 (Oracle)
  • IDE: NetBeans IDE 8.0.2
リスト:LineChartSample.java 
package linechartsample;

import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.chart.CategoryAxis;
import javafx.scene.chart.LineChart;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.XYChart;
import javafx.scene.chart.XYChart.Series;
import javafx.stage.Stage;

public class LineChartSample extends Application {

    @Override
    public void start(Stage stage) {
        stage.setTitle("Line Chart Sample");

        //defining the axes
        final CategoryAxis xAxis = new CategoryAxis();
        final NumberAxis yAxis = new NumberAxis();

        //creating the chart
        final LineChart lineChart = new LineChart(xAxis, yAxis);

        lineChart.setData(getChartData());
        lineChart.setTitle("折れ線グラフのサンプル");

        Scene scene = new Scene(lineChart, 600, 400);
        stage.setScene(scene);
        stage.show();
    }

    /**
     *
     * @return ObservableList<XYChart.Series<String, Double>>
     */
    private ObservableList<XYChart.Series<String, Double>> getChartData() {
        double y1 = 0.1;
        double y2 = -0.1;

        Series<String, Double> series1 = new Series<>();
        Series<String, Double> series2 = new Series<>();

        series1.setName("系列1");
        series2.setName("系列2");

        for (int i = 2011; i < 2021; i++) {
            series1.getData().add(new XYChart.Data(Integer.toString(i), y1));
            y1 = y1 + Math.random() - .5;

            series2.getData().add(new XYChart.Data(Integer.toString(i), y2));
            y2 = y2 + Math.random() - .5;
        }

        ObservableList<XYChart.Series<String, Double>> seriesList = FXCollections.observableArrayList();
        seriesList.addAll(series1, series2);

        return seriesList;
    }

    public static void main(String[] args) {
        launch(args);
    }
}

実行例を以下に示します。

このチャートのままでは、プレゼン資料や論文に使えません。次回は、このサンプルをベースにして好きなように修飾してみようと思います。

参考サイト

  1. LineChart from ObservableList<XYChart.Series<String, Double>> : LineChart « JavaFX « Java

0 件のコメント: