【问题标题】:Dc.js no update between chartsDc.js 图表之间没有更新
【发布时间】:2016-03-17 22:55:25
【问题描述】:

我开始尝试理解dc.js。

不幸的是,当我在一张图表中选择一个值时,我无法更新我的图表,因为所有教程/示例都应该有效。

我在这里做了一个jsfiddle:http://jsfiddle.net/hqwzs3ko/12/

  var ndx = crossfilter(dataSet);
  dims = groups = {};
  dims.countries = ndx.dimension(function(d) {
    return d.countryCode;
  });
  dims.gender = ndx.dimension(function(d) {
    return d.Gender;
  });
  dims.emailFlag = ndx.dimension(function(d) {
    return d.emailFlag;
  });

  //dims.countries.filter("DEU");

  groups.all = ndx.groupAll();
  groups.countries = dims.countries.group();
  groups.gender = dims.gender.group();
  groups.emailFlag = dims.emailFlag.group();

这 3 个图表显示 3 个不同的维度,因此应用于一个节目的过滤器适用于另一个节目?

提前感谢您的帮助。

【问题讨论】:

  • 呃……我被难住了。在 Safari 中看起来没有什么问题。在 Chrome 中它被破坏了,因为 Crossfilter 没有正确加载。你不能真正从 Github 加载资源。使用 rawgit.com 之类的东西。这可能会导致其他浏览器出现静默故障?
  • @EthanJewett 我在我的帖子jsfiddle.net/hqwzs3ko/12 中编辑了 jsfiddle 以将 cdnjs 用于外部 js - crossfilter 和 dc 现在都使用 cdnjs

标签: javascript d3.js dc.js crossfilter


【解决方案1】:

好的发现。

这里一切正常:http://jsfiddle.net/hqwzs3ko/22/

这个想法是根据您想要计算的值定义一个 reduce 函数,在我的例子中是记录(客户)的数量。 因此,reduce 函数必须基于与用于维度创建的值不同的值:

groups.clientsPerCountries = dims.countries.group().reduceCount(function (d) { return +d.key});
groups.clientsPerGender = dims.gender.group().reduceCount(function (d) { return +d.key});
groups.clientsPerEmailFlag = dims.emailFlag.group().reduceCount(function (d) { return +d.key});

有了这个一切都很好!

【讨论】:

  • 嗯,它正在工作,但这不是它现在工作的原因:-) 你会注意到,如果我删除你的 reduceSums/reduceCounts,这个版本仍然可以正常工作:jsfiddle.net/qm2cz34k (顺便说一句 - reduceCount 不带参数,因此传递给它的函数不会做任何事情。)那么为什么它现在可以工作而以前没有呢?不知道。可能正确加载 Crossfilter 是修复它的原因。
  • 嗯......这确实很奇怪。 Crossfilter 已在我的(本地)版本中正确加载,因此它应该可以工作。我现在唯一的提示是我对维度和组都使用了相似的变量名。也许 crossfilter 混合了这些(纯粹的猜测)!无论如何感谢您的反馈
猜你喜欢
  • 2015-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-10
  • 2020-02-03
  • 2013-07-14
  • 2014-09-29
  • 1970-01-01
相关资源
最近更新 更多