删除Graphviz

时间:2017-04-11 02:22:44

标签: python graphviz dot pydot

有没有一种很好的方法可以从图表中删除节点? 我正在使用graphviz库来创建节点,但它们没有删除节点的功能

目的: [我想显示一个节点从一个集群移动到另一个节点,但我找不到从旧集群中删除它的方法,因为名称重复而无法将其添加到新集群中]

我得到了使用pydotplus库的建议,但是graphviz和pydotplus中的对象不能作为子图添加到一个图中,所以如果你确认没有使用Graphviz的解决方案,我必须更改整个代码

1 个答案:

答案 0 :(得分:1)

我找到了一种方法,但它并不那么好,

每次使用graphviz函数时,都会将DOT代码添加到图形体中,这是一个python列表,如下所示:

>>> graph=gv.Digraph(format = 'gif')
>>> graph.node('a')
>>> graph.node('b')
>>> print (graph.source)
digraph {
    a
    b
} 

您可以访问正文列表:

>>>graph.body[0]

但输出将是这样的

 '\ta'

你可以通过两种方式删除它:

>>>del graph.body[0]

或使用删除,如果你真的知道确切的格式

>>> graph.body.remove('\ta')

使用

很容易知道格式
>>>graph.body[index]

然后构建一个代码来搜索字符串匹配并从图形主体中删除它们(如果你已经为同一个集群创建了多次子图,就像我的情况一样)