在this堆积条形图中,我添加了平分线和自定义x.invert
功能,以便您可以阅读每个月的值:
问题在于,当我添加此自定义功能时,团队2& 3不再更新现有的rect
,但是当您从选择下拉列表中选择不同的类别时,我会从左上角重新绘制条形图,我不知道为什么。
删除与x.invert
函数相关的所有代码会使条形图再次正确更新,因此它可能与x域有关,但我不确定。
答案 0 :(得分:2)
在绑定数据时使用键功能是D3中非常好的做法,可确保对象的持久性。因此,与接受其他答案中的建议相反,您不应将其删除。
而不是删除它,只需修复关键功能。现在的问题是因为键是......
["Team 1 CC", "Team 2 CC", "Team 3 CC"]
...对于选定的数据集,这......
d.key.split(' ')[0]
..将为每个组返回TEAM
,并且键显然不能相同。
所以,就这样......
d.key.split(' ')[0] + d.key.split(' ')[1]
甚至只是......
d.key.slice(0, -3)
...将返回:TEAM 1
,TEAM 2
和TEAM 3
。
以下是您更新的Plunker:https://plnkr.co/edit/XCvmDj9a3yF37dzDmA6d?p=preview
答案 1 :(得分:1)
这段代码看起来像你的错误:
let barGroups = g.selectAll("g.layer")
.data(stacking, d=>d.key.split(' ')[0]);
您将第二个参数传递给.data
方法。根据{{3}}:
selection.data([data [,key]])
...可以指定一个关键功能来控制哪个 datum分配给哪个元素,替换默认值 通过计算每个数据的字符串标识符来连接索引 元件。
如果删除它,您的可视化文件将有效docs。