gpt4 book ai didi

javascript - 使用 dc.js 渲染行图时丢失数据

转载 作者:行者123 更新时间:2023-11-28 05:09:09 24 4
gpt4 key购买 nike

创建 dc.js 行图时丢失数据。

  var ndx = crossfilter(data);

var emailDimemsion = ndx.dimension(function(d) {
return d.email;
});

var emailGroup = emailDimemsion.group().reduce(
function(p, d) {
++p.count;
p.totalWordCount += +d.word_count;
p.studentName = d.student_name;
return p;
},
function(p, d) {
--p.count;
p.totalWordCount -= +d.word_count;
p.studentName = d.student_name;
return p;
},
function() {
return {
count: 0,
totalWordCount: 0,
studentName: ""
};
});


leaderRowChart
.width(600)
.height(300)
.margins({
top: 0,
right: 10,
bottom: 20,
left: 5
})
.dimension(emailDimemsion)
.group(emailGroup)
.elasticX(true)
.valueAccessor(function(d) {
return +d.value.totalWordCount;
})
.rowsCap(15)
.othersGrouper(false)
.label(function(d) {
return (d.value.studentName + ": " + d.value.totalWordCount);
})
.ordering(function(d) {
return -d.value.totalWordCount
})
.xAxis()
.ticks(5);

dc.renderAll();

fiddle 在这里,https://jsfiddle.net/santoshsewlal/6vt8t8rn/

我的图表是这样的: enter image description here

但我期望我的结果是

enter image description here

我是否以某种方式弄乱了reduce函数以省略数据?

谢谢

最佳答案

不幸的是,使用 crossfilter 的 dc.js 图表有两个级别的排序。

首先,dc.js 使用group.top(N) 提取前 N 个,其中 N 是 rowsCap 值。 Crossfilter 根据 group.order function 对这些项目进行排序.

然后它使用 chart.ordering 函数再次对项目进行排序。

在这种情况下,第二种排序可以掩盖第一种排序无法正常工作的事实。 Crossfilter 不知道如何对对象进行排序,除非您告诉它要查看哪个字段,因此 group.top(N) 返回一些随机项目。

您可以通过使交叉过滤器组的顺序与图表的顺序匹配来修复图表:

emailGroup.order(function(p) {
return p.totalWordCount;
})

你的 fiddle fork :https://jsfiddle.net/gordonwoodhull/0kvatrb1/1/

看起来有一名学生的字数要长得多,但除此之外这与您的电子表格一致:

fixed row chart

我们计划将来停止使用group.top,因为当前的行为高度不一致。

https://github.com/dc-js/dc.js/issues/934

更新:如果您愿意使用不稳定的最新版本,dc.js 2.1.4 及更高版本请勿使用 group.top - 上限已确定通过chart.orderingcapMixin.cap ,和 capMixin.takeFront仅。

关于javascript - 使用 dc.js 渲染行图时丢失数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41521723/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com