javafx
チャート
サーチ…
円グラフ
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の値に対応するgetXValueとgetYValueを使用してアクセスできる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);
}

