gpt4 book ai didi

javascript - 如何更新 d3 中的绑定(bind)数据

转载 作者:行者123 更新时间:2023-11-28 02:11:54 24 4
gpt4 key购买 nike

如何更新 d3.js 中绑定(bind)的数据?

为什么我只能访问绑定(bind)的数据而不能修改它?

我还想使用绑定(bind)数据修改 cx。但为了做到这一点,我需要更新数据。

var dataset = [10, 110];

var svg = d3.select("body").append("svg:svg")
.attr("width", 960)
.attr("height", 500);

var g = svg.append("svg:g");

g.selectAll("circle")
.data(dataset)
.enter()
.append("svg:circle")
.attr("cx", function(d) {return d;} )
.attr("cy", 10 )
.attr("r", 5)
.style("fill", "rgb(125,125,125)")
.call(d3.behavior.drag().on("drag", move));

function move(d){
var dragTarget = d3.select(this);
dragTarget
.attr("cx", d3.event.dx + parseInt(dragTarget.attr("cx")))
.attr("cy", function(){return d3.event.dy + parseInt(dragTarget.attr("cy"))});

d = d + d3.event.dx;
console.log(d);
};

最佳答案

您可以使用 d3.select(this).data()[0].propertyxyz 访问数据。因此,如果您需要将 x 和 y 坐标绑定(bind)到数据,您可以执行以下操作:

        function move() {
d3.select(this).data()[0].x += d3.event.dx;
d3.select(this).data()[0].y += d3.event.dy;
d3.select(this).attr("x", +d3.select(this).attr("x") + d3.event.dx);
d3.select(this).attr("y", +d3.select(this).attr("y") + d3.event.dy);
}

我建议使用增量 x 和 y 值,由于某种原因 d3.event.x 和 d3.event.y 不是很准确。

关于javascript - 如何更新 d3 中的绑定(bind)数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16973209/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com