最近我在尝试理解D3弦图,特别是D3v7。我得到了两个不同的数据集,并希望动态更新这些数据集。一般来说,它在两个问题旁边工作:
1.每个数据集中的第一个对象将被忽略。我不知道为什么任何console.log显示了现有的数据,但它只是没有被绘制。例如,基于groups1和paths1的数据集1缺少对象A,而在dataset2中缺少对象E。
1.一旦更新了图表,旧的元素仍然存在,图表会创建新的路径,而不会删除旧的。每次单击和更改都会增加浏览器中的D3元素,而不是替换它们。
由于D3v3和D3v7有点变化,我不能很快弄清楚,以帮助自己.
第一个
1条答案
按热度按时间doinxwow1#
问题1通过以下方式解决:
因为您已经在前面的语句中将
g
添加到了wrapper
,所以选择的内容有些不明确:let ribbons = wrapper.append("g");
问题2似乎更复杂一些。
首先,每次调用
update
时,都会在svg
下创建一个新的g
,并将其赋值给wrapper
。第二,
update
同时使用chord
和chords
,前者在update
之外更新,后者在update
之内更新。第三,您可以为外部的每个弧、带和标签设置一个
g
,然后进入、更新和退出逻辑对它们内部的path
和text
元素起作用。在下面的工作示例中,我简化了一些其他的小细节:
第一个