更改ScatterChart中的数据点和/或系列的z-index javafx

时间:2018-04-21 12:46:21

标签: java javafx-8 scatter-plot

我在尝试更改ScatterChart中数据系列的排列顺序时遇到了问题。 基本上,对于多个系列,布局顺序是从系列添加到图表的顺序给出的。然而,如果我删除一个并在以后再添加它,它将显示在顶部。 我试过了:

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

这看起来很脏,而且计算效率很高......

任何其他方式?

编辑

我实际上解决了数据Point的问题,意识到有一个" toFront"方法

然而,由于我没有该系列的节点,我不知道我应该在哪个项目上调用关于该系列的 toFront()。我是否真的需要按照我想要的系列的顺序来调用所有系列中的所有数据点?

1 个答案:

答案 0 :(得分:0)

我检查了散点图生成的节点树,事实上,所有dataPoints实际上都是同一组的子节点,无论它们属于哪个系列。

因此除了以下方法之外没有其他方法可以按正确顺序放置系列:

//List<Series<Double, Double>> myOrderedListOfSeries;

myOrderedListOfSeries.forEach(series->
    series.getData().forEach(dataPoint->
         dataPoint.getNode().toFront()
     )
 );