원래 양면 막대 차트를 그래프로 그리기 위해 BarChart 객체를 사용하려고했지만 this question을보고 난 후에 StackedBarChart가 내가 찾고있는 것을 깨달았습니다. 이 방법을 궁금해하는 다른 사용자를 위해 양면 막대 그래프/막대 그래프를 만들 때 사용한 코드입니다.
import java.util.Arrays;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.scene.Scene;
import javafx.scene.chart.CategoryAxis;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.StackedBarChart;
import javafx.scene.chart.XYChart;
import javafx.stage.Stage;
public class HorizontalHistogramTest extends Application{
final static String austria = "Austria";
final static String brazil = "Brazil";
final static String france = "France";
final static String italy = "Italy";
final static String usa = "USA";
final CategoryAxis xAxis = new CategoryAxis();
final NumberAxis yAxis = new NumberAxis();
final StackedBarChart<Number, String> sbc =
new StackedBarChart<Number,String>(yAxis, xAxis);
final XYChart.Series<Number,String> series1 =
new XYChart.Series<Number,String>();
@Override
public void start(Stage stage) {
stage.setTitle("Bar Chart Sample");
sbc.setTitle("Country Summary");
xAxis.setLabel("Country");
xAxis.setCategories(FXCollections.<String>observableArrayList(
Arrays.asList(austria, brazil, france, italy, usa)));
yAxis.setLabel("Percent");
// plus value
series1.getData().add(new XYChart.Data<Number,String>(10, austria));
series1.getData().add(new XYChart.Data<Number,String>(50, brazil));
series1.getData().add(new XYChart.Data<Number,String>(40, france));
series1.getData().add(new XYChart.Data<Number,String>(50, italy));
series1.getData().add(new XYChart.Data<Number,String>(60, usa));
// minus value
series1.getData().add(new XYChart.Data<Number,String>(-90, austria));
series1.getData().add(new XYChart.Data<Number,String>(-50, brazil));
series1.getData().add(new XYChart.Data<Number,String>(-60, france));
series1.getData().add(new XYChart.Data<Number,String>(-50, italy));
series1.getData().add(new XYChart.Data<Number,String>(-40, usa));
Scene scene = new Scene(sbc, 800, 600);
sbc.getData().addAll(series1);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}