我正在为大型数据集创建交互式可视化。由于数据集的大小,无法在浏览器中加载数据集。我们在节点服务器上使用crossfilter来加载和过滤数据服务器端。我想知道我是否能以某种方式将服务器端交叉滤波器滤波器与dc.js图表结合起来。
我现在正在使用d3.js创建图表但想要使用dc.js中已有的各种图表。我们基本上是在服务器端过滤数据,然后在客户端上监听图表上的更改,并在服务器上执行适当的过滤并通过AJAX进行通信。
如果有人可以建议在dc.js客户端和crossfilter服务器之间采用类似的AJAX通信机制,那将非常有用。
答案 0 :(得分:5)
很想知道你在这里的经历。我的发现是客户端 - 服务器延迟是Crossfilter解决的主要问题之一。感兴趣的是,如果您发现服务器上的Crossfilter实际上为您购买了任何东西,并且交互性足够好,并且在合理的延迟时间内有用。似乎使用数据库可能会更快。
那就是说,在回答你的问题时,根据我的经验,dc.js并不需要Crossfilter维度和组。它只需要工作的对象,如Crossfilter维度和组。因此,如果你为dc.js提供了具有.top()方法的对象,但那些.top()方法实际上是使用AJAX命中服务器并返回一个看起来像Crossfilter返回的数据结构,它应该可以工作。我只使用非常基本的图表来完成此操作,因此如果您使用更高级的功能,则可能必须实现其他方法。我相信你一定要确保方法调用阻塞,直到他们返回数据。
答案 1 :(得分:5)
dc.js和crossfilter之间的耦合不是很紧,这应该是可能的。
最近有一篇关于在dc.js邮件列表上交换crossfilter的讨论,这几乎是同样的问题:
https://groups.google.com/forum/#!topic/dc-js-user-group/fkRoFHuqg4k
您需要编组的主要功能是group.all
和dimension.filter
。对不起,我不知道有人远程访问crossfilter,但我知道有很多人几乎这个,我毫不怀疑它可以工作。