D3.js 如何将mpld3和square/crossfilter的优点合并为自定义插件?

D3.js 如何将mpld3和square/crossfilter的优点合并为自定义插件?,d3.js,matplotlib,mpld3,D3.js,Matplotlib,Mpld3,所以,我在研究mpld3,寻找一些更大的数据集(磁盘上约700MB),我可以使用这些数据集进行加载。有趣的是能够做以下事情: import matplotlib.pyplot as pl import numpy as np import mpld3 # data is a numpy recarray of city information, for example fig, ax = pl.subplots(1,3) n, bins, patches = ax[0].hist(data[

所以,我在研究mpld3,寻找一些更大的数据集(磁盘上约700MB),我可以使用这些数据集进行加载。有趣的是能够做以下事情:

import matplotlib.pyplot as pl
import numpy as np
import mpld3

# data is a numpy recarray of city information, for example

fig, ax = pl.subplots(1,3)
n, bins, patches = ax[0].hist(data['population'], bins=10)
counts, edges_x, edges_y, im = ax[1].hist2d(data['land_area'], data['wealth'], bins=10)
points = ax[2].scatter(data['latitude'], data['longitude'])

然后能够在生成的直方图上进行拖动/滑动选择,以动态更改其他两个绘图,从而仅绘制通过选择的点。我的猜测是,因为地块中的每个“城市”之间没有联系,这可能要求太多,而且完全使用
d3
更容易?

我们传统上一直在引导人们远离大型数据集的
mpld3
,例如:

mpld3是否适用于大型数据集

简短的回答:不太可能。Mpld3和matplolib本身一样,是为中小型可视化而设计的,这一点不太可能改变。原因是MPLD3是建立在HTML的SVG的基础上的,它并不特别适合于大型数据集。超过几千个元素的情节对交互功能的反应明显较慢


然而,
crossfilter
可能是使
mpld3
能够很好地处理大数据的一种很好的通用方法,如果你能让它工作,请分享

如果您可以通过删除或预聚合维度来聚合数据,则应该可以。如果你只有10个人口箱和100个土地面积/财富箱,那么这应该不是问题。问题是你正在处理多少独特的纬度/经度组合。我有点困惑为什么你可能会引导人们远离大型数据集。特别是,很明显,在处理这些大型数据集时,聚合是一种方法(使用交叉过滤器可以加载10万个以上的事件,运行速度与300个事件一样快),原因也是一样的。是否有编写mpld3插件以及调试它的好教程/文档?也许答案只是我们不知道交叉过滤器。这是一个,这是一个。交叉过滤和类似的数据聚合技术在matplotlib中可能会发生,而且即使没有mpld3,也可能对matplotlib有用!出于这个原因,我认为该功能不属于mpld3本身。虽然你是对的,我们可以引导人们朝那个方向前进。如果您对自动进行这种聚合的python可视化软件包感兴趣,我想看看。