如何按值而不是键对 dc.js 饼图进行排序
How to sort a dc.js pie chart by its values instead of by its keys
默认排序嵌入dc.js:
function pieLayout () {
return d3.pie().sort(null).value(_chart.cappedValueAccessor);
}
我想覆盖此默认值并按值而不是键排序。
是否有我缺少的函数可以执行此操作,或者是否有办法使用 d3 select 图表并使用类似这样的方法进行排序:
d3.layout.pie().sort(null).value(function(d) { return d.freq; });
我不太熟悉 dc.js,但是 dc.pieLayout
中的 returned 对象实际上是一个饼图生成器。这意味着您始终可以通过在 return 值上调用 .sort()
来覆盖 returned 对象的属性:
var pieLayout = dc.pieLayout()
.sort(function(d) { return d.value });
这将覆盖 dc.js
设置的默认值
在dc.js中,排序是通过BaseMixin.ordering()处理的。
您引用的行禁用了 D3 的排序,因为 dc.js 已经对数据进行了排序。 (看起来像 pie.sort
already defaults to null,所以这可能是多余的。)
所有 CapMixin 图表(饼图和行)的默认设置是从最大值到最小值排序。 (从馅饼的顶部顺时针方向。)
this.ordering(kv => -kv.value);
如果您看到按字母顺序排列,可能的原因是您的组归约值是对象,它将在上述表达式中强制转换为 NaN。排序失败,group.all()
排序被保留,which is by key。如果是这种情况,您可能需要
pieChart.ordering(kv => -kv.value.freq)
默认排序嵌入dc.js:
function pieLayout () {
return d3.pie().sort(null).value(_chart.cappedValueAccessor);
}
我想覆盖此默认值并按值而不是键排序。
是否有我缺少的函数可以执行此操作,或者是否有办法使用 d3 select 图表并使用类似这样的方法进行排序:
d3.layout.pie().sort(null).value(function(d) { return d.freq; });
我不太熟悉 dc.js,但是 dc.pieLayout
中的 returned 对象实际上是一个饼图生成器。这意味着您始终可以通过在 return 值上调用 .sort()
来覆盖 returned 对象的属性:
var pieLayout = dc.pieLayout()
.sort(function(d) { return d.value });
这将覆盖 dc.js
设置的默认值在dc.js中,排序是通过BaseMixin.ordering()处理的。
您引用的行禁用了 D3 的排序,因为 dc.js 已经对数据进行了排序。 (看起来像 pie.sort
already defaults to null,所以这可能是多余的。)
所有 CapMixin 图表(饼图和行)的默认设置是从最大值到最小值排序。 (从馅饼的顶部顺时针方向。)
this.ordering(kv => -kv.value);
如果您看到按字母顺序排列,可能的原因是您的组归约值是对象,它将在上述表达式中强制转换为 NaN。排序失败,group.all()
排序被保留,which is by key。如果是这种情况,您可能需要
pieChart.ordering(kv => -kv.value.freq)