Javascript 使用d3仅修改已更改的元素
我使用d3在页面上绘制矩形网格 有一个数组确定网格中每个单元格的颜色。有时,此数组的元素会更新以更改其颜色Javascript 使用d3仅修改已更改的元素,javascript,d3.js,Javascript,D3.js,我使用d3在页面上绘制矩形网格 有一个数组确定网格中每个单元格的颜色。有时,此数组的元素会更新以更改其颜色 是否有d3模式或方法仅更改特定元素?我有一个渲染函数,可以在d3中重新渲染整个网格,但我不想在只有少数单元格改变颜色时迭代(并更改填充)每个rect元素,因为可能有数千个单元格。我只是检查了源代码,似乎没有。如果性能是一个问题,我在每次调用.enter时要做的就是通过设置自定义.attr('data-lastColor')来跟踪任何更改。在每次.data更新调用之后,我都会这样做 .dat
是否有d3模式或方法仅更改特定元素?我有一个渲染函数,可以在d3中重新渲染整个网格,但我不想在只有少数单元格改变颜色时迭代(并更改填充)每个rect元素,因为可能有数千个单元格。我只是检查了源代码,似乎没有。如果性能是一个问题,我在每次调用
.enter
时要做的就是通过设置自定义.attr('data-lastColor')
来跟踪任何更改。在每次.data
更新调用之后,我都会这样做
.data(dataSet)
.attr('color', function(d){
var theElement = d3(this);
var newColor;
//set the new color here, under whatever conditions you want
if (foo==bar) {
newColor = 'green'
} else {
newColor = 'red'
}
if theElement.attr('data-lastColor') != newColor {
theElement.attr('color') = newColor;
theElement.attr('data-lastColor') = newColor;
} else {
//Don't do anything if the new color is the same as this color, saving valuable computing time
}
})
如果答案边缘有点粗糙,很抱歉,但它应该满足您的要求:)嘿,谢谢。很奇怪,d3没有一种“绑定”到数据集的方式。我只是在我要更改的点上添加一点脏东西。