有没有办法从服务器流式传输大型数据集并以异步方式使用 dc.js 可视化数据?
对数据集进行分块,然后在区块到达时使用区块更新客户端上的可视化效果。
喜欢这个页面: http://vcf.iobio.io/?vcf=http://s3.amazonaws.com/vcf.files/ExAC.r0.2.sites.vep.vcf.gz&species=Human&build=GRCh37
我认为您需要做的就是设置所有图表,然后设置一个循环间隔计时器,该计时器获取块并调用crossfilter.add,然后调用dc.redrawAll():
var cf = crossfilter([]); // start with no data
// set up dimensions, groups, and charts, then ...
window.setInterval(function() {
d3.csv(/* your data source with chunk parameters */, function(error, data) {
data.forEach(function(d) {
// preprocess data
});
cf.add(data);
dc.redrawAll();
});
}, 5000); // or choose an appropriate interval for processing your chunks
可能有一种更智能的方式来链接请求,以便始终有一个 ajax 请求在传输中,并且浏览器正在处理大量数据。(可能在最后一个请求到达后立即启动下一个请求。
但我认为这是最好的入门方式,因为它很容易理解。
我不知道有哪个公共数据源有一个 restful chunk API,但如果你知道一个并且可以创建一个小提琴示例,我相信一个示例会对很多人有所帮助。