【问题标题】:JavaFX - How to sort values in a BarChartJavaFX - 如何对条形图中的值进行排序
【发布时间】:2015-03-26 20:53:52
【问题描述】:

我有以下 JavaFX 条形图(底部的 NumberAxis,左侧的 CategoryAxis):

http://i.imgur.com/3cHPuX1.png

如何反转(即按值排序)类别的顺序,使 J 显示在顶部,A 显示在底部?

【问题讨论】:

    标签: java javafx javafx-2 bar-chart


    【解决方案1】:

    你可以这样做:

    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 将按给定顺序显示条形图,而不是对任何内容进行排序。
    • 奇怪。请编写代码中的排序,因为这有效。 new Comparator() { @Override public int compare(Data o1, Data o2) { Number xValue1 = (Number) o1.getXValue();数字 xValue2 = (数字) o2.getXValue(); return new BigDecimal(xValue1.toString()).compareTo(new BigDecimal(xValue2.toString())); } }
    【解决方案2】:

    图表数据可以按大小降序排序,这样类别轴总是排序的。

    bc.getData().sort((Series<String, Number> o1, Series<String, Number> o2) -> o1.getData().size() <= o2.getData().size()?1:0);
    

    【讨论】:

    • 请不要对多个问题发布相同的答案。很有可能,这些问题是重复的,应该这样标记。如果不是,请调整您对每个问题的答案,以说明它们为何/如何不同。
    猜你喜欢
    • 2014-10-02
    • 2017-12-06
    • 2022-08-23
    • 2018-12-21
    • 1970-01-01
    • 2020-09-01
    • 1970-01-01
    • 2018-04-03
    • 1970-01-01
    相关资源
    最近更新 更多