Javascript D3更新条形图-无法绑定新数据

Javascript D3更新条形图-无法绑定新数据,javascript,d3.js,transition,Javascript,D3.js,Transition,你好,我是d3新手,无法更新条形图中的数据。 我使用下面的代码创建这些条 g.selectAll(".bar") .data(data) .enter().append("rect") .attr("class", "bar") .attr("x", function(d) { return x(d.letter) + 1; }) .attr("y", function(d) { return y(d.frequency); }) .attr("width", x.bandwidth() - 1

你好,我是d3新手,无法更新条形图中的数据。 我使用下面的代码创建这些条

g.selectAll(".bar")
.data(data)
.enter().append("rect")
.attr("class", "bar")
.attr("x", function(d) { return x(d.letter) + 1; })
.attr("y", function(d) { return y(d.frequency); })
.attr("width", x.bandwidth() - 1)
.attr("height", function(d) { return height - y(d.frequency); })
我能够使用硬编码值修改数据:

var bar = svg.selectAll(".bar");

bar.transition().duration(750).data(data).enter()
   .attr("y", function(d) { return 0; })
   .attr("height", function(d) { return Math.random()*100; });

如何正确绑定新数据?

有关以编程方式使用新数据更新条形图并在此过程中显示转换动画的示例,请参见下面的代码段

var data=[{x:10,y:10,w:50,h:25}, {x:10,y:40,w:150,h:25}, {x:10,y:70,w:70,h:25}]; var g=d3.g; //将初始数据绑定到空选择,然后使用enter键 //从数据联接访问虚拟选择的步骤 //然后为每个虚拟选择追加一个rect g、 选择All.bar .数据 .enter.appendrect .职业,酒吧 .attrx,函数d{return d.x;} .attry,函数d{return d.y;} .attrwidth,函数d{return d.w;} .attrheight,函数d{return d.h;}; var new_data=[{x:10,y:10,w:150,h:25}, {x:10,y:40,w:50,h:25}, {x:10,y:70,w:100,h:25}]; //将新数据绑定到rect对象。自从新的数据 //与矩形数的大小相同,请输入和退出 //来自数据联接的选择将为空,并且RECT //已更新的绑定数据现在在默认情况下可用 //更新所选内容。 g、 选择All.bar .datanew\u data//默认情况下获取更新选择 .transition.duration3000 .attrwidth,函数d{return d.w;};//更新属性
更新数据意味着您必须重新绘制图形。您必须创建一个函数来重新绘制图形。您可以将依赖于数据的代码保留在该函数中。您的问题并不完全清楚。您想知道什么,如何重新绑定数据或如何设置选择?同时,看看S.O.文档中的这个例子:谢谢你的代码片段!这有助于我理解。