Javascript 如何更新发散堆积条形图d3js中的数据
我制作了一个从一个csv文件到另一个csv文件的更新程序,yaxis会相应地更新,但矩形不会 函数(d){return Math.abs(y(d[0]))-y(d[1]);}代码>部分代码仍然包含来自上一个文件的旧数据(我猜是这样) 我猜这是因为我没有在Javascript 如何更新发散堆积条形图d3js中的数据,javascript,d3.js,Javascript,D3.js,我制作了一个从一个csv文件到另一个csv文件的更新程序,yaxis会相应地更新,但矩形不会 函数(d){return Math.abs(y(d[0]))-y(d[1]);}部分代码仍然包含来自上一个文件的旧数据(我猜是这样) 我猜这是因为我没有在updateData()函数中声明.data(series),我记得在另一个图表中做过类似的操作 g.selectAll(".bar").data(series).transition() 等等。。。 但这在这个图表中不起作用 我搞不懂,谢谢你的帮
updateData()
函数中声明.data(series)
,我记得在另一个图表中做过类似的操作
g.selectAll(".bar").data(series).transition()
等等。。。
但这在这个图表中不起作用
我搞不懂,谢谢你的帮助 问题是您没有将新数据连接到现有条 为了使这项工作顺利进行,在将序列加入到g元素时,您需要为数据类别指定一个键,以确保一致性(尽管我注意到category-1在第一个数据集中为正,在第二个数据集中为负,但我想这是测试数据) 以下是更新的plunkr(),相关代码如下所示:
g.append("g")
.selectAll("g")
.data(series, function(d){ return d.key }) //add function to assign a key
.enter().append("g")
.attr("class", "bars") //so its easy to select later on
//etc
...
function updateData() {
d3.csv("data2.csv", type, function(error, data) {
///etc
let bars = d3.selectAll(".bars") //select the g elements
bars.data(series, function(d){ return d.key }) //join the new data
.selectAll(".bar")
.data(function(d) { return d; })
.transition()
.duration(750)
.attr("y", function(d) { return y(d[1]); })
.attr("height", function(d) { return Math.abs(y(d[0])) - y(d[1]); });