我想通过Javascript来标识我的节点,从而确保每个元素(图、节点、边)都有一个唯一的ID。我找到了https://github.com/magjac/d3-graphviz#maintaining-object-constancy部分,并认为.keyMode('id')
会告诉d3-graphviz使用我的ID。但id
仍然使用图ID,似乎没有使用节点ID。我在这个例子中找到了一个title
属性:https://bl.ocks.org/magjac/28a70231e2c9dddb84b3b20f450a215f这个属性是什么?我能确定它就是我要找的ID吗?在D3-graphviz中id
和title
之间有什么关系?
***EDIT***我试着挖掘并得到了这个简单的例子。我有这个(自动生成的)输入文件:
digraph {
label=""
id="g1"
n1 [id="n1", label="First Node"]
n2 [id="n2", label="Second Node"]
n1 -> n2 [id="e1", arrowHead="normal", arrowTail="dot"]
}
我得到这样的结果:
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="134pt" height="116pt" viewBox="0.00 0.00 133.59 116.00">
<g id="g1" class="graph" transform="translate(4,112) scale(1)">
<polygon fill="white" stroke="transparent" points="-4,4 -4,-112 129.59,-112 129.59,4 -4,4"></polygon>
<!-- n1 -->
<g id="n1" class="node">
<title>n1</title>
<ellipse fill="none" stroke="black" cx="62.8" cy="-90" rx="52.16" ry="18"></ellipse>
<text text-anchor="middle" x="62.8" y="-85.8" font-family="Times,serif" font-size="14.00">First Node</text>
</g>
<!-- n2 -->
<g id="n2" class="node">
<title>n2</title>
<ellipse fill="none" stroke="black" cx="62.8" cy="-18" rx="62.59" ry="18"></ellipse>
<text text-anchor="middle" x="62.8" y="-13.8" font-family="Times,serif" font-size="14.00">Second Node</text>
</g>
<!-- n1->n2 -->
<g id="e1" class="edge">
<title>n1->n2</title>
<path fill="none" stroke="black" d="M62.8,-71.7C62.8,-63.98 62.8,-54.71 62.8,-46.11"></path>
<polygon fill="black" stroke="black" points="66.3,-46.1 62.8,-36.1 59.3,-46.1 66.3,-46.1"></polygon>
</g>
</g>
</svg>
但是当我以编程方式在鼠标事件中为节点提供<g>
时,我会得到ID:svg-0.g1.n2
最后一点造成了混乱。我需要找到属性值,而不是一个连接的值。但这将工作。谢谢!
1条答案
按热度按时间cqoc49vn1#
基础Graphviz语言提供了一个id属性(https://www.graphviz.org/docs/attrs/id/)。基于d3-graphviz一致性文本,看起来d3-graphviz将荣誉此id属性。