Javascript 二维刷涂交叉滤波散射图

Javascript 二维刷涂交叉滤波散射图,javascript,d3.js,crossfilter,Javascript,D3.js,Crossfilter,我正在考虑用刷子刷一个散点图,但不清楚该怎么刷;我非常仔细地研究了Mike的d3代码 特别是,我的问题是: 查询:我不知道如何对交叉筛选进行二维查询。我是否应该: a。我自己做2个一维查询并与结果相交吗 b。制作一个二维维度,例如data.dimensionfunctiond{return[d.x,d.y];},并对其使用自定义筛选函数 性能:绘制散点图需要约150毫秒,绘制直方图需要约10毫秒。这使得实时更新即使查询速度很快,也不是很好。 我将在crossfilter中设置两个维度——一个用于

我正在考虑用刷子刷一个散点图,但不清楚该怎么刷;我非常仔细地研究了Mike的d3代码

特别是,我的问题是:

查询:我不知道如何对交叉筛选进行二维查询。我是否应该:

a。我自己做2个一维查询并与结果相交吗

b。制作一个二维维度,例如data.dimensionfunctiond{return[d.x,d.y];},并对其使用自定义筛选函数

性能:绘制散点图需要约150毫秒,绘制直方图需要约10毫秒。这使得实时更新即使查询速度很快,也不是很好。 我将在crossfilter中设置两个维度——一个用于x,一个用于y——并让crossfilter库为您与结果相交。Crossfilter在幕后做了一些奇特的事情,可以更好地处理一维数据。如果您没有太多数据,并且只需要散点图过滤器,则只需复制花朵示例可能会更容易:

返回e[0][0]>d[p.x]|d[p.x]>e[0] ||e>d[p.y]| d[p.y]>e

不要重新绘制整个散点图!看看flower示例,唯一改变的是“hidden”类的应用程序。如果只更新点的颜色,更新不会花费150毫秒。此外,如果将打印的点保留在原位,则可以添加冷却

我将在crossfilter中设置两个维度——一个用于x,一个用于y——并让crossfilter库为您与结果相交。Crossfilter在幕后做了一些奇特的事情,可以更好地处理一维数据。如果您没有太多数据,并且只需要散点图过滤器,则只需复制花朵示例可能会更容易:

返回e[0][0]>d[p.x]|d[p.x]>e[0] ||e>d[p.y]| d[p.y]>e

不要重新绘制整个散点图!看看flower示例,唯一改变的是“hidden”类的应用程序。如果只更新点的颜色,更新不会花费150毫秒。此外,如果将打印的点保留在原位,则可以添加冷却

质疑

a。2个一维查询。和亚当斯的评论一样。对于一维数据,交叉过滤速度更快

渲染

我认为这大部分与呈现有关,而不是查询本身。Adam给出了一些很好的观点,但我想提供一些替代来源:

研究利用d3.geom.quadtree。这将允许您仅重新显示受影响的点。然而,这意味着对其他数据集的查询不能更改散点图中单个点的x、y位置;因为您必须重新编制四叉树的索引

另外,您是否考虑过另一种可视化技术? 2d装箱是一种有助于避免性能问题的好方法:

质疑

a。2个一维查询。和亚当斯的评论一样。对于一维数据,交叉过滤速度更快

渲染

我认为这大部分与呈现有关,而不是查询本身。Adam给出了一些很好的观点,但我想提供一些替代来源:

研究利用d3.geom.quadtree。这将允许您仅重新显示受影响的点。然而,这意味着对其他数据集的查询不能更改散点图中单个点的x、y位置;因为您必须重新编制四叉树的索引

另外,您是否考虑过另一种可视化技术? 2d装箱是一种帮助避免性能问题的好方法:

您考虑过使用吗

js是一个Javascript图表库,它扩展了D3.js并提供了支持。我刚开始用它做柱状图,虽然我还没有试过做散点图。它允许您以交互方式对子集进行过滤和放大,而且使用交叉过滤时速度很快。

您考虑过使用吗


js是一个Javascript图表库,它扩展了D3.js并提供了支持。我刚开始用它做柱状图,虽然我还没有试过做散点图。它允许您以交互方式过滤和放大子集,而且使用交叉过滤功能速度很快。

谢谢。我还不清楚如何让交叉过滤器与结果相交。你能提供一个代码片段来勾勒出你的想法吗?另外,关于重画的好观点;只需更新类,绘图速度就会快得多。然而,不管出于什么原因,这并不是crossfilter示例所做的。我在试图将其作为注释发布时丢失了代码snippit,基本上是在这个文件中对“cartoDbIds”使用ctrl-f,并在查看crossfilter api的同时查看解决方案中的两个代码块。crossfilter示例从未重新绘制个人点,只是直方图条。谢谢。我还不清楚如何让交叉过滤器与结果相交。你能提供一个代码片段来勾勒出你的想法吗
? 另外,关于重画的好观点;只需更新类,绘图速度就会快得多。然而,不管出于什么原因,这并不是crossfilter示例所做的。我在试图将其作为注释发布时丢失了代码snippit,基本上是在这个文件中对“cartoDbIds”使用ctrl-f,并在查看crossfilter api的同时查看解决方案中的两个代码块。crossfilter示例从未重新绘制个人点,只是直方图条。