python - Graphviz/Python : Recoloring a single node after it has been generated

标签 python graphviz

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

例如

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

q

Output of simple graph

是否可以在事后更改节点“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/

相关文章:

excel - 如何创建重叠条形图?

utf-8 - Graphviz 不支持 UTF-8 编码

graph - Graphviz 中的隐藏边

python - Firefox 和 Python 上的 SQLite 管理器

python - 来自 abc 模块的可散列抽象类

python - 如何使用上下文管理器将每个方法包装在类中?

syntax - 如何更改箭头类型?

python - 从 DateTimeIndex 的 1 列中减去另一列会引发 ValueErrors 和 TypeErrors

python - 优化用于 numpy 方差计算的 Cython 代码

python - 如何在Python 3.6上使用conda或pip安装pygraphviz?