gpt4 book ai didi

JavaFX StackedBarChart - 清除系列在图表中留下不可见的数据

转载 作者:太空宇宙 更新时间:2023-11-04 12:55:51 26 4
gpt4 key购买 nike

当一系列数据被清除时,StackedBarChart 显示出奇怪的行为。我想使用 StackedBarChart,可以在多个同质数据集之间切换,即每个数据集对于一年中的每个月 (xAxis) 都有一个数值 (yAxis)。

这个最小的例子很好地说明了问题:

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] 为空。

我可以通过创建新的系列对象来解决这个问题,这些对象又会改变它们的颜色,我有另一种解决方法。

但是有人知道如何解决这个问题吗?难道我做错了什么?我应该将此作为错误归档吗?

<小时/>

附注:看了源码。问题似乎是

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轴的偏移量。

这只是为了记录意外行为,我已经改用解决方法了。

最佳答案

这是一个解决方法。在你做清楚之前。将 Y 值设置为 0。

series.getData().forEach(a -> a.setYValue(0));

关于JavaFX StackedBarChart - 清除系列在图表中留下不可见的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35397223/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com