Graphviz/Python:生成单个节点后重新着色

6 python graphviz

我正在 Python 2.7 中熟悉 graphviz。绘制单个节点后是否可以更改其属性?

例如

from graphviz import Digraph
q = Digraph()
q.node('a')
q.node('b')
q.edge('a','b')

q
Run Code Online (Sandbox Code Playgroud)

简单图的输出

事后是否可以更改节点“b”的颜色?我知道我可以在生成时设置它

q.node('b', color = 'blue')
Run Code Online (Sandbox Code Playgroud)

但是,我希望能够在生成它后对其进行更改。

此链接为 Networkx 和 Graphviz 中的特定节点着色

建议使用图的 .node 属性来更新字典

G.node[2]['fillcolor']='red'
Run Code Online (Sandbox Code Playgroud)

以此类推,我尝试过

q.node['b']['color'] = 'blue'
Run Code Online (Sandbox Code Playgroud)

这给出了一个错误:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-54-43b05071d09a> in <module>()
----> 1 q.node['b']['color'] = 'blue'

TypeError: 'instancemethod' object has no attribute '__getitem__'
Run Code Online (Sandbox Code Playgroud)

我想这可能是因为我没有像前一个例子那样使用networkx。

我还阅读了http://graphviz.org/content/attrs上的 graphviz 文档, 但我的实验都没有成功。我确信这很简单,但我错过了......

--- 俱乐部里的老家伙

Mat*_*dge 4

我已通读 API 文档,认为在构建后不可能编辑节点。

如果您不想使用 networkx,一种解决方法是将图形存储在您自己的数据结构中,并在您准备好(重新)渲染它时使用它来创建 graphviz 图。例如,您可以保留所有应为蓝色的节点的名称列表,然后在构建 graphviz 图时引用该列表。以这种方式将模型与其渲染分离也可能使维护变得更加容易。