【问题标题】:Changing the z-index of data points and/or series in ScatterChart javafx在 ScatterChart javafx 中更改数据点和/或系列的 z-index
【发布时间】:2018-04-21 12:46:20
【问题描述】:

我在尝试更改数据系列在 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);

这看起来很脏,计算能力也很差......

还有其他方法吗?

编辑

我实际上解决了数据点的问题,意识到有一个“toFront”方法。

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

【问题讨论】:

    标签: java javafx-8 scatter-plot


    【解决方案1】:

    我查看了散点图生成的Node树,其实所有的dataPoints其实都是同一个组的children,不管它们属于哪个Series。

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

    //List<Series<Double, Double>> myOrderedListOfSeries;
    
    myOrderedListOfSeries.forEach(series->
        series.getData().forEach(dataPoint->
             dataPoint.getNode().toFront()
         )
     );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 2012-06-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多