在 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()
     )
 );