![](/img/trans.png)
[英]Node.js (npm) refuses to find python even after %PYTHON% has been set
[英]Graphviz/Python: Recoloring a single node after it has been generated
我開始熟悉 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')
但是,我希望能夠在生成后更改它。
此鏈接為 Networkx 和 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 圖時參考該列表。 以這種方式將模型與其渲染分離也可能使維護更容易。
一種方法是直接編輯圖形對象。
>>> from graphviztest import *
>>> import json
>>> dot = Digraph(comment='My graph', format='png')
>>> dot.node('A', 'hurr')
>>> dot.node('B', 'durr')
>>> dot.edge('A','B')
>>> print dot
// My graph
digraph {
A [label=hurr]
B [label=durr]
A -> B
}
>>> print json.dumps(dot.__dict__, indent=2)
{
"comment": "My graph",
"_encoding": "utf-8",
"name": null,
"edge_attr": {},
"_format": "png",
"body": [
"\tA [label=hurr]",
"\tB [label=durr]",
"\tA -> B"
],
"filename": "Digraph.gv",
"graph_attr": {},
"strict": false,
"node_attr": {}
}
>>> dot.body[0] = '\tA [label=derp]'
>>> dot.body[1] = '\tB [label=blah]'
>>> print dot
// My graph
digraph {
A [label=derp]
B [label=blah]
A -> B
}
>>>
您還可以將生成的圖形保存在 SVG 中並直接編輯 SVG,使用 CSS 更改給定節點的顏色。 在 SVG 中,生成的節點有 id,可以很容易地改變顏色(筆觸屬性)。
如果將輸出格式設置為dot ,則會計算布局,但不會實際繪制。 然后,您可以使用 Python、sed、awk 或 gvpr ( https://www.graphviz.org/pdf/gvpr.1.pdf ) 修改該(增強的)Graphviz 文件以修改顏色和/或其他屬性。
然后使用此命令繪制圖形: neato -n2 -Tpng myfile.dot >myfile.png
有關延遲繪圖的更多信息,請參見此處: https : //www.graphviz.org/faq/#FaqDotWithCoordsor
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.