我正在使用 D3 的力导向图构建流行病模拟。
当发生传输事件时,我想将一个圆圈从发射器移到新感染的个体。
问题:仅根据绑定数据创建和移动第一个元素。
首先,我收集坐标:
xyCoords = getPathogen_xyCoords(newInfections);
xyCoords 如下所示:
{receiverX: newInfections[i].x, receiverY: newInfections[i].y, transmitterX: newInfections[i].infectedBy.x, transmitterY: newInfections[i].infectedBy.y}
然后我创建圆圈并将它们绑定到 xyCoords:
d3.select(".svg").append("circle")
.attr("class", "pathogen")
d3.selectAll(".pathogen")
.data(xyCoords)
.attr("cx", function(d) { return d.transmitterX})
.attr("cy", function(d) { return d.transmitterY})
.attr("r", 4)
.style("fill", "green")
最后,圆移动了一个过渡:
d3.selectAll(".pathogen")
.transition()
.duration(500)
.attr("cx", function(d) { return d.receiverX} )
.attr("cy", function(d) { return d.receiverY} );
编辑:这款游戏已经上线几个月了,而且做得很好!在http://vax.herokuapp.com上查看!