【发布时间】:2015-03-26 20:53:52
【问题描述】:
我有以下 JavaFX 条形图(底部的 NumberAxis,左侧的 CategoryAxis):
http://i.imgur.com/3cHPuX1.png
如何反转(即按值排序)类别的顺序,使 J 显示在顶部,A 显示在底部?
【问题讨论】:
标签: java javafx javafx-2 bar-chart
我有以下 JavaFX 条形图(底部的 NumberAxis,左侧的 CategoryAxis):
http://i.imgur.com/3cHPuX1.png
如何反转(即按值排序)类别的顺序,使 J 显示在顶部,A 显示在底部?
【问题讨论】:
标签: java javafx javafx-2 bar-chart
你可以这样做:
XYChart.Series series1 = new XYChart.Series();
series1.getData().add(new XYChart.Data(1, "A"));
series1.getData().add(new XYChart.Data(1, "B"));
series1.getData().add(new XYChart.Data(1, "C"));
series1.getData().add(new XYChart.Data(1, "D"));
series1.getData().add(new XYChart.Data(1, "E"));
series1.getData().add(new XYChart.Data(2, "F"));
series1.getData().add(new XYChart.Data(2, "G"));
series1.getData().add(new XYChart.Data(4, "H"));
series1.getData().add(new XYChart.Data(4, "J"));
Collections.sort(series1.getData(), new Comparator<XYChart.Data>() {
@Override
public int compare(Data o1, Data o2) {
Number xValue1 = (Number) o1.getXValue();
Number xValue2 = (Number) o2.getXValue();
return new BigDecimal(xValue1.toString()).compareTo(new BigDecimal(xValue2.toString()));
}
});
【讨论】:
series1.getData().add(new XYChart.Data(4, "H")); series1.getData().add(new XYChart.Data(1, "B")); series1.getData().add(new XYChart.Data(2, "F")); Collections.sort(...); //as in suggested code,BarChart 将按给定顺序显示条形图,而不是对任何内容进行排序。
图表数据可以按大小降序排序,这样类别轴总是排序的。
bc.getData().sort((Series<String, Number> o1, Series<String, Number> o2) -> o1.getData().size() <= o2.getData().size()?1:0);
【讨论】: