gpt4 book ai didi

javascript - 如何在 d3js 中更新分组条形图

转载 作者:行者123 更新时间:2023-12-03 03:15:20 26 4
gpt4 key购买 nike

在此plunker 我尝试以与 this 类似的方式根据新的 csv 数据更新条形图。

它获取新数据并更新矩形,但不会删除以前的数据。

我不知道代码的哪一部分无法正常工作,在之前的尝试中我省略了 .attr("transform", function(d) { return "translate("+ x0(d.State) ) + ",0)"; })并让最左边的一组条形图更新并删除以前的数据,但其他组均未显示。

感谢任何帮助!

编辑:上传了一个工作示例here

相关代码如下:

let bars = g.selectAll(".test")
.data(data)
bars = bars.enter().append("g")
.attr("transform", function(d) { return "translate(" + x0(d.State) + ",0)"; })
.selectAll("rect")
.data(function(d) {
return keys.map(function(key) {
return {key: key, value: d[key]};
});
})
bars = bars
.enter().append("rect")
.attr("width", x1.bandwidth())
.attr("x", function(d) { return x1(d.key); })
.attr("fill", function(d) { return z(d.key); })
.merge(bars)

bars.transition()
.duration(750)
.attr("y", function(d) { return y(d.value); })
.attr("height", function(d) { return height - y(d.value); });

bars.exit().remove();

最佳答案

图表中的图层/组似乎没有根据新数据进行更新。以下是您可以对栏的进入、更新和退出代码进行的一些更改:

var barGroups = g.selectAll("g.layer").data(data); 
barGroups.enter().append("g").classed('layer', true)
.attr("transform", function(d) { return "translate(" + x0(d.State) + ",0)"; });

barGroups.exit().remove();

var bars = g.selectAll("g.layer").selectAll("rect")
.data(function(d) {
return keys.map(function(key) {
return {key: key, value: d[key]};
});
});
bars.enter().append("rect").attr("width", x1.bandwidth())
.attr("x", function(d) { return x1(d.key); })
.attr("fill", function(d) { return z(d.key); })
.transition().duration(750)
.attr("y", function(d) { return y(d.value); })
.attr("height", function(d) { return height - y(d.value); });

bars
.transition().duration(750)
.attr("y", function(d) { return y(d.value); })
.attr("height", function(d) { return height - y(d.value); });

bars.exit().remove();

因此,如果您查看代码,首先会处理条形组/图层,然后处理实际的条形,即矩形。如果这不起作用,请告诉我。

希望这有帮助。 :)

关于javascript - 如何在 d3js 中更新分组条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46796733/

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