サーチ…


円グラフ

PieChartクラスは、スライスに分割された円の形式でデータを描画します。すべてのスライスは、特定の値に対する割合(パーツ)を表します。円グラフデータは、 PieChart.Dataオブジェクトにラップされます。各PieChart.Dataオブジェクトには、パイスライスの名前と対応する値の2つのフィールドがあります。

コンストラクタ

円グラフを作成するには、 PieChartクラスのオブジェクトを作成する必要があります。 2つのコンストラクタが処分されます。そのうちの1つは、データがsetDataメソッドで設定されていない限り、何も表示されない空のグラフを作成します。

PieChart pieChart = new PieChart(); // Creates an empty pie chart

もう1つはPieChart.Data ObservableListをパラメータとして渡す必要があります。

ObservableList<PieChart.Data> valueList = FXCollections.observableArrayList(
            new PieChart.Data("Cats", 50),
            new PieChart.Data("Dogs", 50));
PieChart pieChart(valueList); // Creates a chart with the given data

データ

スライスサイズはすべての値の合計に比例して計算されるため、パイスライスの値は必ずしも100になる必要はありません。

データエントリがリストに追加される順序によって、チャート上の位置が決定されます。デフォルトでは時計回りに配置されますが、この動作は逆になります。

pieChart.setClockwise(false);

次の例では、単純な円グラフを作成します。

import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.chart.PieChart;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;

public class Main extends Application {

@Override
public void start(Stage primaryStage) {
    Pane root = new Pane();
    ObservableList<PieChart.Data> valueList = FXCollections.observableArrayList(
            new PieChart.Data("Android", 55),
            new PieChart.Data("IOS", 33),
            new PieChart.Data("Windows", 12));
    // create a pieChart with valueList data.
    PieChart pieChart = new PieChart(valueList);
    pieChart.setTitle("Popularity of Mobile OS");
    //adding pieChart to the root.
    root.getChildren().addAll(pieChart);
    Scene scene = new Scene(root, 450, 450);

    primaryStage.setTitle("Pie Chart Demo");
    primaryStage.setScene(scene);
    primaryStage.show();
}

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

出力:

結果

対話式円グラフ

デフォルトでは、 PieChartはイベントを処理しませんが、各スライスがJavaFX Nodeであるため、この動作は変更できます。

下の例では、データを初期化してグラフに割り当てた後、通常は隠されている値をユーザーに提示できるように、各スライスにツールチップを追加してデータセットを反復処理します。

ObservableList<PieChart.Data> valueList = FXCollections.observableArrayList(
            new PieChart.Data("Nitrogen", 7809),
            new PieChart.Data("Oxygen", 2195),
            new PieChart.Data("Other", 93));
    
PieChart pieChart = new PieChart(valueList);
pieChart.setTitle("Air composition");

pieChart.getData().forEach(data -> {
    String percentage = String.format("%.2f%%", (data.getPieValue() / 100));
    Tooltip toolTip = new Tooltip(percentage);
    Tooltip.install(data.getNode(), toolTip);
});

折れ線グラフ

LineChartクラスは、データを直線で接続された一連のデータポイントとして表示します。各データポイントはXYChart.Dataオブジェクトにラップされ、データポイントはXYChart.Seriesグループ化されXYChart.Series

XYChart.Dataオブジェクトには、チャート上のxとyの値に対応するgetXValuegetYValueを使用してアクセスできる2つのフィールドがあります。

XYChart.Data data = new XYChart.Data(1,3);
System.out.println(data.getXValue()); // Will print 1
System.out.println(data.getYValue()); // Will print 3

LineChartを作成する前に、その軸を定義する必要があります。たとえば、 NumberAxisクラスのデフォルトで引数のないコンストラクタは、使用準備ができており、これ以上設定する必要のない自動レンジング軸を作成します。

Axis xAxis = new NumberAxis();

以下の完全な例では、同じグラフに表示される2つの一連のデータを作成します。軸のラベル、範囲、ティック値は明示的に定義されています。

@Override
public void start(Stage primaryStage) {
    Pane root = new Pane();

    // Create empty series
    ObservableList<XYChart.Series> seriesList = FXCollections.observableArrayList();

    // Create data set for the first employee and add it to the series
    ObservableList<XYChart.Data> aList = FXCollections.observableArrayList(
            new XYChart.Data(0, 0),
            new XYChart.Data(2, 6),
            new XYChart.Data(4, 37),
            new XYChart.Data(6, 82),
            new XYChart.Data(8, 115)
    );
    seriesList.add(new XYChart.Series("Employee A", aList));

    // Create data set for the second employee and add it to the series
    ObservableList<XYChart.Data> bList = FXCollections.observableArrayList(
            new XYChart.Data(0, 0),
            new XYChart.Data(2, 43),
            new XYChart.Data(4, 51),
            new XYChart.Data(6, 64),
            new XYChart.Data(8, 92)
    );
    seriesList.add(new XYChart.Series("Employee B", bList));

    // Create axes
    Axis xAxis = new NumberAxis("Hours worked", 0, 8, 1);
    Axis yAxis = new NumberAxis("Lines written", 0, 150, 10);
    
    LineChart chart = new LineChart(xAxis, yAxis, seriesList);

    root.getChildren().add(chart);

    Scene scene = new Scene(root);
    primaryStage.setScene(scene);
    primaryStage.show();
}

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

出力:

折れ線グラフ



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow