我希望在堆积条形图中可视化每月的传入与传出金额,但差异应立即可见。
我正在使用以下示例代码:
public class Statistics extends Application {
final CategoryAxis xAxis = new CategoryAxis();
final NumberAxis yAxis = new NumberAxis();
final StackedBarChart<String, Number> sbc = new StackedBarChart<>(xAxis, yAxis);
final XYChart.Series<String, Number> incoming = new XYChart.Series<>();
final XYChart.Series<String, Number> outgoing = new XYChart.Series<>();
@Override
public void start(Stage stage) {
xAxis.setLabel("Month");
xAxis.setCategories(FXCollections.observableArrayList(
Arrays.asList("Jan", "Feb", "Mar")));
yAxis.setLabel("Value");
incoming.setName("Incoming");
incoming.getData().add(new XYChart.Data("Jan", 25601.34));
incoming.getData().add(new XYChart.Data("Feb2", 20148.82));
incoming.getData().add(new XYChart.Data("Mar2", 10000));
outgoing.setName("Outgoing");
outgoing.getData().add(new XYChart.Data("Jan", -7401.85));
outgoing.getData().add(new XYChart.Data("Feb2", -1941.19));
outgoing.getData().add(new XYChart.Data("Mar2", -5263.37));
Scene scene = new Scene(sbc, 800, 600);
sbc.getData().addAll(incoming, outgoing);
stage.setScene(scene);
stage.show();
}
}
结果是:
正如您所看到的,负传出值显示在零以下,而不是从正传入值中减去,这使得很难看到2。
我想要的是,负值的条形从条形顶部开始为正值,但是当它们重叠时,也会沿x轴应用偏移。在“Jan”系列的例子中,这应该类似于:
我正在玩getNode().setTranslateX/Y()
,但这似乎不是一个好的解决方案,因为翻译单位不是图表中的标记,而是其他内容。
如何以优雅的方式创建第二张图像中的“堆叠”条形图?