如何按值而不是按键对dc.js饼图进行排序



默认排序嵌入在dc.js:中

function pieLayout () {
return d3.pie().sort(null).value(_chart.cappedValueAccessor);
}

我想覆盖这个默认值,并按Value而不是Key排序。

有没有我缺少的功能可以做到这一点,或者有没有一种方法可以使用d3选择图表并使用类似的东西进行排序:

d3.layout.pie().sort(null).value(function(d) { return d.freq; });

在dc.js中,排序是通过BaseMixin.ordering((.处理的

您引用的行禁用了D3的排序,因为dc.js已经对数据进行了排序。(看起来pie.sort已经默认为null,所以这可能是多余的。(

所有CapMixin图表(饼图和行图(的默认值是从最大值到最小值进行排序。(从馅饼顶部顺时针方向。(

this.ordering(kv => -kv.value);

如果您看到的是字母排序,一个可能的原因是您的组reduce值是对象,这将在上面的表达式中强制为NaN。排序失败,保留group.all()排序,按键排序。如果是这样的话,你可能想要像这样的东西

pieChart.ordering(kv => -kv.value.freq)

我对dc.js不太熟悉,但dc.pieLayout返回的对象实际上是一个饼图生成器。这意味着您可以通过对返回值调用.sort()来覆盖返回对象的属性:

var pieLayout = dc.pieLayout()
.sort(function(d) { return d.value });

这将覆盖dc.js 设置的默认值

最新更新