-->

dc.js - 如何通过组唯一的ID(dc.js - how to group by unique

2019-10-20 11:20发布

我使用dc.js和crossfilter创建从csv 3个rowcharts。 前两个是简单明了,但第三个需要有一个尺寸设置为我输入CSV的多列,所以我调整了数据,因此,对于该行每列需要(与现值),一个新的重复行与新的列下输入该列值创建的。 见下文;

旧的结构:
ID --- rowchart1 --- rowchart2 ---- rowchart3 ----- ----- rowchart3 ----- rowchart3
1
2
3

新的结构:
ID --- rowchart1 --- rowchart2 ---- newRowchart3
1
2
2
2
3
3

因为我能够在rowchart设置为这个新构造柱,但我无法得到原始计数显示在其他两个这一切工作正常。 有效地我越来越重复计数与其他行的图表。
有没有一种办法按一个唯一的ID,因此只计算那些唯一的ID,而不是每一行算不算?
非常感谢

Answer 1:

请参阅: 有没有办法告诉crossfilter治疗阵列作为单独记录的内容,而不是处理整个阵列作为单一关键的?

你举的例子是一个稍微简单的例子,因为你不必为“rowchart3”值的数组,但该解决方案仍然可以为你工作。

答案包括演示如何手动管理图表中的一个类别的jsfiddle。 你会需要改变

function reduceAdd(p, v) {
   if (v.topics[0] === "") return p;    // skip empty values
   v.topics.forEach (function(val, idx) {
      p[val] = (p[val] || 0) + 1; //increment counts
   });
   return p;
}

喜欢的东西

function reduceAdd(p, v) {
   if(v.rowhart3a != "")
      p[v.rowchart3a] = (p[v.rowchart3a] || 0) + 1; //increment counts

   if(v.rowhart3b != "")
      p[v.rowchart3b] = (p[v.rowchart3b] || 0) + 1; //increment counts

   if(v.rowhart3c != "")
      p[v.rowchart3c] = (p[v.rowchart3c] || 0) + 1; //increment counts

   return p;
}

我希望这有帮助。 -DJ



文章来源: dc.js - how to group by unique id