【问题标题】:JavaFX LineChart: Insert new data in the middle of the chartJavaFX LineChart:在图表中间插入新数据
【发布时间】:2014-02-19 23:14:45
【问题描述】:

我正在使用带有 JavaFX 的折线图:

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

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

lineChart.getData().add(series);

我想将数据连续添加到序列中,因此无法预测值到达的顺序。例如,索引可以介于 0 和系列的当前大小之间。

series.getData().add(new XYChart.Data(index, value));

考虑以下场景:

//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。它看起来像这样:

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

需要哪些设置才能正确更新图表而无需额外的线穿过图表?

【问题讨论】:

    标签: java charts javafx series linechart


    【解决方案1】:

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

    final Comparator<XYChart.Data<String, Number>> comparator = 
            (XYChart.Data<String, Number> o1, XYChart.Data<String, Number> o2) -> 
                    o1.getXValue().compareTo(o2.getXValue());
    lineChart.getData().get(0).getData().add(new XYChart.Data<>("2020", 1));
    XYChart.Series newSeries = new XYChart.Series(lineChart.getData().get(0).getData().sorted(comparator));
    lineChart.getData().add(0,newSeries);
    

    【讨论】:

      【解决方案2】:

      JavaFX 9 为这个问题提供了新的答案。

      如果你有JDK9,试试

      lineChart.setAxisSortingPolicy(LineChart.SortingPolicy.X_AXIS);
      

      (这是 JavaFX 9 的默认设置)

      如果您希望按照添加的顺序绘制数据,请使用:

      lineChart.setAxisSortingPolicy(LineChart.SortingPolicy.NONE);
      

      在此处查看信息: http://download.java.net/jdk9/jfxdocs/javafx/scene/chart/LineChart.html#axisSortingPolicyProperty

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-17
        • 2012-08-03
        • 2014-08-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多