在 ScatterChart javafx 中更改数据点 and/or 系列的 z-index
Changing the z-index of data points and/or series in ScatterChart javafx
我在尝试更改数据系列在散点图中的排列顺序时遇到了问题。
基本上,对于多个系列,布局顺序是根据系列添加到图表的顺序给出的。然而,如果我删除一个并稍后再次添加它,它会出现在顶部。
我试过了:
myChart.getData().add(specificIndex, series)
要确保最后一个不在最上面,但是不行
我也试过:
myChart.getData().add(lastSeries);
myChart.getData().stream().sort((seriesA, seriesB)->myComparator(seriesA, seriesB));
但是也不行。
另外,我在显示数据点时遇到了类似的问题。
基本上,我试图创建一个分散的热图,其中的点根据图表上的密度进行着色。因此,数据与一个矩形节点相关联,该节点的颜色与给定半径内存在的节点数成正比。
这很好,除了在非常密集的区域,一些点隐藏了其他密度更高的点,最终结果不能代表密度函数...
唯一的解决方法是(对于系列):
myChart.getData().clear()
myChart.getData().addAll(myCorrectlyOrderedListOfSeries);
这看起来很脏而且计算效率低下...
还有其他方法吗?
编辑
其实我解决了data Point的问题,发现原来有"toFront"方法
然而,由于我没有该系列的节点,我不知道我应该在哪个项目上调用关于该系列的 toFront()。我真的需要按照我想要的系列顺序调用所有系列的所有数据点吗?
我查了一下散点图生成的Node树,其实所有的dataPoints其实都是同一组的children,不管它们属于哪个Series。
因此除了以下方法之外别无他法才能将系列按正确顺序排列:
//List<Series<Double, Double>> myOrderedListOfSeries;
myOrderedListOfSeries.forEach(series->
series.getData().forEach(dataPoint->
dataPoint.getNode().toFront()
)
);
我在尝试更改数据系列在散点图中的排列顺序时遇到了问题。 基本上,对于多个系列,布局顺序是根据系列添加到图表的顺序给出的。然而,如果我删除一个并稍后再次添加它,它会出现在顶部。 我试过了:
myChart.getData().add(specificIndex, series)
要确保最后一个不在最上面,但是不行
我也试过:
myChart.getData().add(lastSeries);
myChart.getData().stream().sort((seriesA, seriesB)->myComparator(seriesA, seriesB));
但是也不行。
另外,我在显示数据点时遇到了类似的问题。 基本上,我试图创建一个分散的热图,其中的点根据图表上的密度进行着色。因此,数据与一个矩形节点相关联,该节点的颜色与给定半径内存在的节点数成正比。
这很好,除了在非常密集的区域,一些点隐藏了其他密度更高的点,最终结果不能代表密度函数...
唯一的解决方法是(对于系列):
myChart.getData().clear()
myChart.getData().addAll(myCorrectlyOrderedListOfSeries);
这看起来很脏而且计算效率低下...
还有其他方法吗?
编辑
其实我解决了data Point的问题,发现原来有"toFront"方法
然而,由于我没有该系列的节点,我不知道我应该在哪个项目上调用关于该系列的 toFront()。我真的需要按照我想要的系列顺序调用所有系列的所有数据点吗?
我查了一下散点图生成的Node树,其实所有的dataPoints其实都是同一组的children,不管它们属于哪个Series。
因此除了以下方法之外别无他法才能将系列按正确顺序排列:
//List<Series<Double, Double>> myOrderedListOfSeries;
myOrderedListOfSeries.forEach(series->
series.getData().forEach(dataPoint->
dataPoint.getNode().toFront()
)
);