我尝试为StackedBar Chart实现this解决方案,但事实证明StackedBar图表中没有Java方法row.names=FALSE
。对于这个问题,最新的JavaFX版本有没有解决方案?
基本示例:
write.csv
答案 0 :(得分:2)
在BarChart
图表中,添加的不同系列会在同一类别的不同列中绘制,并带有 barGap ,其间有一些间距。
但是在StackBarChart
图表中,不同的系列被绘制在同一列中,因此在这种情况下没有条形间隙。
如果您使用此answer中的setMaxBarWidth()
方法,则只需将bc.getBarGap()
设置为0,然后将sbc.getData().size()
设为1.在这种情况下,不需要迭代。
这将是新方法,真正简化:
private void setMaxCategoryWidth(double maxCategoryWidth, double minCategoryGap){
double catSpace = xAxis.getCategorySpacing();
sbc.setCategoryGap(catSpace - Math.min(maxCategoryWidth, catSpace - minCategoryGap));
}
基本上,您所要做的就是从类别的初始宽度中减去所需类别的宽度,并将此额外空间放入categoryGap。
现在,您可以创建图表:
StackedBarChart<String, Number> sbc = new StackedBarChart<>(xAxis, yAxis);
并为类别设置所需的大小:
setMaxCategoryWidth(40, 10);
sbc.widthProperty().addListener((obs, b, b1) -> {
Platform.runLater(() -> setMaxCategoryWidth(40, 10));
});
此图片是根据取自here的样本7.4生成的。