在 JavaFX XYSeries 中查找最大 Y
Find maximum Y in JavaFX XYSeries
series.getData().add(new XYChart.Data(x ,function(x));
我尝试获取函数的最大值(x);我知道我可以使用 "series.getData().sort"
但是当我写
series.getData().sort(Comparator.comparingDouble(d -> d.getYValue().doubleValue()));
它说无法解析方法getYValue
;
如何解决这个问题?
您不太可能想要对数据进行排序,这可能会扭曲图表的含义。相反,从所需的系列中获取数据流并调用 max()
method, as @fabian .
以ensemble.samples.charts.line.chart.LineChartApp
的数据为例,
ObservableList<XYChart.Series<Double, Double>> lineChartData = FXCollections.observableArrayList(
new LineChart.Series<>("Series 1", FXCollections.observableArrayList(
new XYChart.Data<>(0.0, 1.0),
new XYChart.Data<>(1.2, 1.4),
new XYChart.Data<>(2.2, 1.9),
new XYChart.Data<>(2.7, 2.3), //max
new XYChart.Data<>(2.9, 0.5))),
new LineChart.Series<>("Series 2", FXCollections.observableArrayList(
new XYChart.Data<>(0.0, 1.6),
new XYChart.Data<>(0.8, 0.4),
new XYChart.Data<>(1.4, 2.9), //max
new XYChart.Data<>(2.1, 1.3),
new XYChart.Data<>(2.6, 0.9)))
);
以下片段产生预期的输出 forEach()
系列。
lineChartData.forEach((series) -> {
System.out.println(series.getData().stream().max(
Comparator.comparing(XYChart.Data::getYValue)).get().getYValue());
});
控制台:
2.3
2.9
series.getData().add(new XYChart.Data(x ,function(x));
我尝试获取函数的最大值(x);我知道我可以使用 "series.getData().sort"
但是当我写
series.getData().sort(Comparator.comparingDouble(d -> d.getYValue().doubleValue()));
它说无法解析方法getYValue
;
如何解决这个问题?
您不太可能想要对数据进行排序,这可能会扭曲图表的含义。相反,从所需的系列中获取数据流并调用 max()
method, as @fabian
以ensemble.samples.charts.line.chart.LineChartApp
的数据为例,
ObservableList<XYChart.Series<Double, Double>> lineChartData = FXCollections.observableArrayList(
new LineChart.Series<>("Series 1", FXCollections.observableArrayList(
new XYChart.Data<>(0.0, 1.0),
new XYChart.Data<>(1.2, 1.4),
new XYChart.Data<>(2.2, 1.9),
new XYChart.Data<>(2.7, 2.3), //max
new XYChart.Data<>(2.9, 0.5))),
new LineChart.Series<>("Series 2", FXCollections.observableArrayList(
new XYChart.Data<>(0.0, 1.6),
new XYChart.Data<>(0.8, 0.4),
new XYChart.Data<>(1.4, 2.9), //max
new XYChart.Data<>(2.1, 1.3),
new XYChart.Data<>(2.6, 0.9)))
);
以下片段产生预期的输出 forEach()
系列。
lineChartData.forEach((series) -> {
System.out.println(series.getData().stream().max(
Comparator.comparing(XYChart.Data::getYValue)).get().getYValue());
});
控制台:
2.3 2.9