【问题标题】:dc.js/crossfilter -> How to sort data in dc.js chart (like row) - Ascending x Descendingdc.js/crossfilter -> 如何在 dc.js 图表中对数据进行排序(如行) - 升序 x 降序
【发布时间】:2014-02-03 21:36:47
【问题描述】:

如何在 dc.js 图表(如行)中对数据进行排序 - 升序 x 降序

我想按指定的属性(如'avg' -> 升序)对图表(行/列)重新排序

我正在尝试使用“.top()”...但没有成功

谢谢

草稿如下 jsfiddle -> ewr5Z/2/

【问题讨论】:

    标签: sorting charts d3.js crossfilter dc.js


    【解决方案1】:

    您可以使用订购方式:

            chart.ordering(function(d){ return -d.value })
    

    如果你写一个自定义reduce,你可以有更大的灵活性:

            priceDimension  = ndx.dimension(function(d) {return d.part_number; });
            priceGroup = priceDimension.group().reduce(
                function (p, v) {
                    ++p.count;
                    p.sumPrice += v.price;
                    p.avgPrice = p.sumPrice/p.count;
                    return p;
                },
                function (p, v) {
                    --p.count;
                    p.sumPrice -= v.price;
                    p.avgPrice = p.sumPrice/p.count;
                    return p;
                },
                function () {
                    return { count:0, sumPrice:0, avgPrice};
                });
        ....
        chart.ordering(function(d){ return d.value.avgPrice});
    

    如果您希望用户能够更改排序顺序,您需要构建一个排序按钮来更改排序并重新呈现图表。

    【讨论】:

    • @nein,我有什么特别需要做的吗?我无法在行图上调用它...
    • 它确实在版本(1.7.5)中工作,但如果你像我一样将value更改为我的情况下的值的名称sessions像这样.ordering(function(d){ return -d.sessions})它不会工作。如果你只是让它如图所示,它会按值排序(无论值的名称是什么)
    猜你喜欢
    • 2018-04-10
    • 1970-01-01
    • 1970-01-01
    • 2018-10-09
    • 2018-05-03
    • 1970-01-01
    • 2021-08-24
    • 1970-01-01
    • 2021-08-23
    相关资源
    最近更新 更多