수색…
파이 차트
PieChart
클래스는 조각으로 나뉘어 진 원의 형태로 데이터를 그립니다. 모든 슬라이스는 특정 값에 대한 백분율 (부분)을 나타냅니다. 원형 차트 데이터는 PieChart.Data
개체로 래핑됩니다. 각 PieChart.Data
객체에는 파이 슬라이스의 이름과 해당 값의 두 개의 필드가 있습니다.
생성자
원형 차트를 만들려면 PieChart
클래스의 개체를 만들어야합니다. 두 명의 생성자가 우리의 처리에 제공됩니다. 그 중 하나는 setData
메서드를 사용하여 데이터를 설정하지 않으면 아무 것도 표시하지 않는 빈 차트를 만듭니다.
PieChart pieChart = new PieChart(); // Creates an empty pie chart
두 번째 매개 변수는 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.Data
객체에는 getXValue
및 getYValue
사용하여 액세스 할 수있는 두 개의 필드가 있으며 차트의 x 및 y 값에 해당합니다.
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();
예
아래의 전체 예제에서 동일한 차트에 표시 될 두 개의 데이터 시리즈를 작성합니다. 축 레이블, 범위 및 눈금 값은 명시 적으로 정의됩니다.
@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);
}