限制堆积条形图的宽度大小

时间:2016-01-02 21:57:25

标签: javafx-2 javafx-8

我尝试为StackedBar Chart实现this解决方案,但事实证明StackedBar图表中没有Java方法row.names=FALSE。对于这个问题,最新的JavaFX版本有没有解决方案?

基本示例:

write.csv

1 个答案:

答案 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生成的。

Size 40