![](/img/trans.png)
[英]How to add and show weights on edges of a undirected graph using PyGraphviz?
[英]How do I make an undirected graph in pygraphviz?
我試圖在pygraphviz中生成無向圖,但是沒有成功。 似乎無論我做什么,圖表總是指向。
Example #1
G = pgv.AGraph(directed=False)
G.is_directed() # true
Example #2
G = pgv.AGraph()
G.to_undirected().is_directed() # True
Example #3
G = pgv.AGraph(directed=False)
G.graph_attr.update(directed=False)
G.is_directed() # true
我不知道為什么這么簡單的事情無法奏效。 我做錯了什么?
我在pygraphviz 1.2上遇到了同樣的問題,但我有一個解決方法。
如果使用DOT語言將所需的圖形類型指定為空圖形(例如graph foo {}
),並將其傳遞給AGraph
的構造AGraph
,則pygraphviz會尊重圖形類型,即使它在作為關鍵字給出時可能會忽略它參數(在我的環境中)。
>>> import pygraphviz as pgv
>>> foo = pgv.AGraph('graph foo {}')
>>> foo.is_directed()
False
>>> foo.add_edge('A', 'B')
>>> print foo
graph foo {
A -- B;
}
該解決方法也適用於strict
參數,在我的環境中也被忽略。
使用以下函數而不是pgv.AGraph
來擁有相同的API:
def AGraph(directed=False, strict=True, name='', **args):
"""Fixed AGraph constructor."""
graph = '{0} {1} {2} {{}}'.format(
'strict' if strict else '',
'digraph' if directed else 'graph',
name
)
return pgv.AGraph(graph, **args)
對於Python 3.6.8和graphviz == 0.11.1
Simple Graph()
為我工作。
from graphviz import *
dot = Graph()
dot.node('1', 'King Arthur')
dot.node('2', 'Sir Bedevere the Wise')
dot.node('3', 'Sir Lancelot the Brave')
dot.edges(['12', '13', '23'])
dot.render(view=True)
解決方案1:
嘗試鏈接這樣的節點:a - b
而不是像這樣:
a - > b
解決方案2:edge [dir = none]
不確定這些是否對你有所幫助,因為我已經有一段時間沒有使用graphviz而忘記了它的語法。 檢查一下,應該很容易理解: http : //en.wikipedia.org/wiki/DOT_language
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.