JavaFX线图:在图表中间插入新数据

JavaFX线图:在图表中间插入新数据,java,charts,javafx,series,linechart,Java,Charts,Javafx,Series,Linechart,我正在使用JavaFX的折线图: LineChart<Number, Number> lineChart = new LineChart<>(xAxis, yAxis); XYChart.Series series = new XYChart.Series(); lineChart.getData().add(series); 考虑以下场景: //initializing... series.getData().add(new XYChart.Data(1, 400

我正在使用JavaFX的折线图:

LineChart<Number, Number> lineChart = new LineChart<>(xAxis, yAxis);

XYChart.Series series = new XYChart.Series();

lineChart.getData().add(series);
考虑以下场景:

//initializing...
series.getData().add(new XYChart.Data(1, 400));
series.getData().add(new XYChart.Data(3, 500));
series.getData().add(new XYChart.Data(8, 100));
series.getData().add(new XYChart.Data(12, 120));
series.getData().add(new XYChart.Data(20, 300));

//later...
series.getData().add(new XYChart.Data(2, 450));
series.getData().add(new XYChart.Data(5, 300));
series.getData().add(new XYChart.Data(15, 200));
问题在于如何描绘图形。在上面的示例中,在索引20处,图形循环回索引2。看起来是这样的:

但我希望它看起来像这样:

需要什么设置才能正确更新图形,而不需要额外的线穿过图形?

我会这样做(我的数据是字符串、数字)。我忍不住想一定有更好的办法。我把这些都放在一个方法中,这样我就可以调用addSorted(series,newData)

最终比较器比较器=
(XYChart.Data o1,XYChart.Data o2)->
o1.getXValue().compareTo(o2.getXValue());
lineChart.getData().get(0.getData().add(新的XYChart.Data(“2020”,1));
XYChart.Series newSeries=新的XYChart.Series(lineChart.getData().get(0.getData().sorted(comparator));
lineChart.getData().add(0,newSeries);

JavaFX9为这个问题提供了一个新的答案

如果您有JDK9,请尝试

lineChart.setAxisSortingPolicy(LineChart.SortingPolicy.X_AXIS);
(这是JavaFX9的默认设置)

如果要按添加顺序打印数据,请使用:

lineChart.setAxisSortingPolicy(LineChart.SortingPolicy.NONE);
请参阅此处的信息:

lineChart.setAxisSortingPolicy(LineChart.SortingPolicy.X_AXIS);
lineChart.setAxisSortingPolicy(LineChart.SortingPolicy.NONE);