d3js直线颜色被其他线条覆盖

时间:2021-07-13 02:36:01

标签: javascript svg d3.js

我使用 d3.js 绘制的依赖图如下图所示 basic graph

用户可以通过图形进行搜索,相应的线条将被突出显示。 然而,由于这条线是直的,这条线的垂直部分实际上是后一个环节。让我用两张图来展示一下。当我们在图中找到的不是根节点的最后一个子节点时,线的垂直部分不是红色的,因为后面的子节点再次将其涂成灰色。

highlighted node not the last child node

如果突出显示的节点是根节点的最后一个子节点,则结果符合我们的预期,如下所示:

highlighted node is the last child node

那么我该怎么做才能将彩色红线放在顶层或防止它再次变成灰色?

1 个答案:

答案 0 :(得分:0)

我假设您正在通过数据联接中的 update 选择更新颜色,

正如 Andrew 在评论中所述,您可能可以使用 selection.raise() 将这些节点放在前面。 SVG 元素按照您添加它们的顺序呈现,因此第 n 个子元素将在第 n+1 个子元素之后,因为后者呈现在前者之上。

但是,您必须小心,仅在您将其着色为橙色的节点中调用 raise,因为在所有正在更新的节点中调用它不会产生任何影响(请记住,一个节点从橙色变为灰色也算更新)

不看你的代码,我相信我能帮到你的东西不多