我正在使用 d3 显示热图。地板上的每个单元格在图中由一个矩形表示。右侧的复选框允许用户过滤掉一些矩形,这会导致大约 1 秒的不透明度变化过渡。
每隔一段时间(大约 25% 的时间),切换大量单元格的显示会导致浏览器(chrome)停止。页面冻结,CPU 风扇开始尖叫,10-20 秒后,细胞消失,一切恢复正常。
知道是什么原因造成的吗?绘图上有 7679 个单元格,具有不同的透明度和一些重叠。
//-------------------------------------------------------------
//Create cells
//-------------------------------------------------------------
var cells = svg.selectAll("rect").data(drawingData, function (d) { return d.id;});
cells.enter()
.append("rect")
.attr("x", function(d) { return xScale(d.x); })
.attr("y", function(d) { return yScale(d.y); })
.attr("width", function(d) { return 4; })
.attr("height", function(d) { return 5; })
.attr("fill", function(d) { return channelcolors[d.channel]; })
.attr("fill-opacity", function(d) { return rssiScale(d.rssi_val); });
cells.exit()
.transition()
.duration(1000)
.ease("linear")
.style("opacity", 0)
.remove();