【问题标题】:crossfilter , dc.js Counting unique value in dimensioncrossfilter , dc.js 计算维度中的唯一值
【发布时间】:2016-04-08 07:20:27
【问题描述】:

我正在尝试创建一个条形图(交叉过滤器和 dc js)来显示有多少人(唯一)参加了一个活动

[
{"Year: 2015" , "Name:Person1"},
{"Year: 2015" , "Name:Person2"},
{"Year: 2015" , "Name:Person3"},
{"Year: 2015" , "Name:Person1"},
{"Year: 2015" , "Name:Person1"},
{"Year: 2016" , "Name:Person4"},
{"Year: 2016" , "Name:Person4"},
{"Year: 2016" , "Name:Person1"},
]

我在 X 轴上绘制年份,在 Y 轴上绘制计数。现在随着我得到的年份减少计数

Year: 2015 Count:3 -> person 1,2,3
Year: 2016 Count:2  -> person 1,4

示例代码

yeardimension.group().reduceCount(function(d) { return d.year }) 

我想得到唯一值和期望值

Year: 2015 Count:5
Year: 2016 Count:3

如何在交叉过滤器和 dc js 中实现这一点?

【问题讨论】:

  • 看起来您的预期值和收到的值在您的问题中是相反的 - 唯一计数是 3 和 2,reduceCount(不带参数 btw)返回 5 和 3,否?

标签: dc.js crossfilter


【解决方案1】:

您需要构建一个非常复杂的自定义减速器。这里有一个例子说明了正确的想法,虽然它不会很快并且会因为不是所有的 JS 字符串都是有效的属性名而中断某些键:Crossfilter reduce :: find number of uniques

您可以使用Reductio's exception aggregation 功能轻松构建这些减速器的快速且强大的版本。或者您可能想关注Universe,它旨在以不同的方式简化此操作,在后台使用 Reductio 和 Crossfilter。

【讨论】:

  • 感谢您的回复。我确实尝试添加自定义 java 脚本,但它不起作用
  • 感谢您的回复。我确实尝试添加自定义 java 脚本,但它没有工作。是不是因为我的维度在 Year 上,并且在尝试减少它时,我试图获得 Name 的唯一性。我的条形图维度和组是按年计算的,因此即使在放置自定义 js 逻辑之后,交叉过滤器仍会尝试获取特定年份的所有记录的计数
  • 请分享复制您的问题的完整代码。更好的是使用 JSfiddle 或 Codepen 创建一个工作示例。
  • 异常聚合对我来说很好用。感谢您的回答。
猜你喜欢
  • 2015-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-02
  • 1970-01-01
  • 1970-01-01
  • 2018-11-02
相关资源
最近更新 更多