我正在熟悉 Python 2.7 中的 graphviz。是否可以在绘制后更改单个节点的属性?
例如
from graphviz import Digraph
q = Digraph()
q.node('a')
q.node('b')
q.edge('a','b')
q
是否可以在事后更改节点“b”的颜色?我知道我可以在生成时设置它
q.node('b', color = 'blue')
但是,我希望能够在生成它之后对其进行更改。
此链接Color a particular node in Networkx and Graphviz
建议使用图的 .node 属性来更新字典
G.node[2]['fillcolor']='red'
以此类推,我试过了
q.node['b']['color'] = 'blue'
这给出了一个错误:
---------------------------------------------------------------------------
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__'
我认为这可能是因为我没有像之前那样使用 networkx。
我还在 http://graphviz.org/content/attrs 阅读了 graphviz 文档 但我的实验都没有奏效。我确定它很简单,但我想念它......
--- 俱乐部里的老家伙
最佳答案
我已经通读了 API 文档,认为在构建后无法编辑节点。
如果您不想使用 networkx,一种解决方法是将图形存储在您自己的数据结构中,并在您准备好(重新)渲染它时使用它来创建 graphviz 图形。例如,您可以保留所有应该为蓝色的节点的名称列表,然后在构建 graphviz 图形时引用它。以这种方式将模型与其渲染分离也可能导致更容易维护。
关于python - Graphviz/Python : Recoloring a single node after it has been generated,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44337180/