javascript - D3 按钮输入更改数据(堆积条形图)
问题描述
我正在做一个项目,我正在制作多个 D3 堆叠条形图。这个想法是,当按下按钮时,绘图将使用不同的数据集重新加载,类似于此处显示的代码。
我的问题是修改此代码以使条形图堆叠。我对 D3 中的更新功能不太熟悉(我从未了解过它),所以我一直在尝试将更多的“rect”对象附加到“u”变量中。它会在第一次正确加载(我期望的所有“rect”对象),但是每当在按钮上调用更新方法时,点击所有绘制的都是附加“rect”调用的第二次迭代。如果有人知道如何将此代码用于堆叠条形图功能,我将不胜感激。
作为参考,这是我一直在尝试的
u
.enter()
.append("rect") // Add a new rect for each new elements
.merge(u) // get the already existing elements as well
.transition() // and apply changes to all of them
.duration(1000)
.attr("x", function(d) { return x(d.group); })
.attr("y", function(d) { return y(d.value1); })
.attr("width", x.bandwidth())
.attr("height", function(d) { return height - y(d.value1); })
.attr("fill", "#69b3a2")
u
.enter()
.append("rect") // Add a new rect for each new elements
.merge(u) // get the already existing elements as well
.transition() // and apply changes to all of them
.duration(1000)
.attr("x", function(d) { return x(d.group); })
.attr("y", function(d) { return y(d.value2 + d.value1); })
.attr("width", x.bandwidth())
.attr("height", function(d) { return height - y(d.value1); })
.attr("fill", "#69b3a2")
解决方案
推荐阅读
- javascript - 如何在没有 Quasar CLI 的情况下配置 Quasar 插件?
- c# - 覆盖默认的 HashAlgorithm.Create()
- javascript - 完成导入数据提取后如何重定向到会计仪表板?
- function - 如何将 gensym 传递给 common lisp 中的函数名
- r - 按天和ID分组,然后求和
- java - 如何使用java通过id查找json节点并返回该节点?
- c - 使用 Visual Studio 2010 进行奇怪的浮点到整数转换
- javascript - 努力减少
- python - Plotly:如何更改 plotly express 散点图的颜色方案?
- html - 来自 MDN 的 z-index 的“版本号”方法不起作用?