【发布时间】:2015-12-08 00:26:40
【问题描述】:
我正在尝试在 HTML5 画布上绘制大量 (60k) 个 (x, y) 点,并在 Chrome 和 Firefox 中使用 D3.js 模拟流数据点,发现浏览器在大约 10 分钟后冻结并崩溃秒。
我正在生成具有如下随机值的数据集:
var data = d3.range(60000).map(function() { return Math.random() * 500; });
将数据的生成分成几个部分会有所帮助吗?我觉得这可能是由于尝试一次存储如此大的数据集造成的。
有什么方法可以防止这种情况发生吗?例如将较小的部分绘制并保存为平铺图像?
添加代码:
var margin = {top: 20, right: 20, bottom: 20, left: 40},
w = 100 - margin.left - margin.right,
h = 100 - margin.top - margin.bottom;
var canvas = d3.select("canvas")
.node();
var context = canvas.getContext('2d');
var scale = d3.scale.linear()
. range([0,w])
.domain([0,h]);
data = d3.range(60000).map(function(){return Math.random()*500});
data.forEach(function(d,i) {
context.strokeStyle="red";
context.lineWidth="1";
context.lineTo(scale(++k),scale(d));
context.stroke();
});
【问题讨论】:
-
我不知道您想要实现哪种图表或绘图,但您是否考虑过使用 WebGL 来利用 GPU?
-
问题不大,你是用d3在画布上还是svg上做的。
-
我正在使用画布。
-
我什至有这个失败: for (j = 0; j
-
我担心输入 60K (x,y) 坐标只会导致同样的崩溃。
标签: javascript memory d3.js