当系列数据被清除时,StackedBarChart显示奇怪的行为。我想使用StackedBarChart,我可以在多个同质数据集之间切换,即每个数据集对于一年中的每个月都有一个数值(yAxis)(xAxis)。
这个最小的例子很好地展示了问题:
import javafx.application.Application;
import javafx.scene.Parent;
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 MinStackedBarChartProblem extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
CategoryAxis xAxis = new CategoryAxis();
NumberAxis yAxis = new NumberAxis();
StackedBarChart<String, Number> root = new StackedBarChart<>(xAxis, yAxis);
XYChart.Series<String, Number> series = new XYChart.Series<>();
root.getData().add(series);
series.getData().add(new XYChart.Data<>("test", 1.0d));
series.getData().clear();
series.getData().add(new XYChart.Data<>("test", 1.0d));
show(primaryStage, root);
}
private void show(Stage primaryStage, Parent root) {
primaryStage.setTitle("Hello World");
primaryStage.setScene(new Scene(root, 800, 600));
primaryStage.show();
}
}
我构建一个包含单个系列的图表,并将一个数据条目放入值1。 然后我清除该系列并再次添加1。 结果栏从1开始,到2结束,而范围[0..1]为空。
我可以通过创建新的系列对象来解决这个问题,而这些系列对象又会改变颜色,我有另一种解决方法。
但有人知道如何解决这个问题吗?难道我做错了什么? 我应该将此作为错误提交吗?
P.S .: 看着源头。问题似乎是
private Map<Series, Map<String, List<Data<X, Y>>>> seriesCategoryMap
StackedBarChart的成员。 StackedBarChart不打算从那里删除值。
有人提出了possible duplicate,这有点不同。 首先,该问题的解决方案并不能解决这个问题。 同样在这种情况下,只有数据的顺序是错误的, 但数据看起来是正确的。
A stacked bar chart NOT starting at 0 makes no sense
所有categoryMap仍然使用第一个数据对象来计算x轴的偏移量,尽管它没有被绘制。
这仅用于记录该意外行为, 我已经切换到了解决方法。
答案 0 :(得分:0)
这是一种解决方法。在您清除之前。将Y值设置为0。
series.getData().forEach(a -> a.setYValue(0));