2016-04-19 36 views
1

我想用pydot創建有向圖,我也有一個現成的邊集。邊集的類型可以是列表或元組,無論如何,因爲我可以按照我的要求預先構建邊集,就像[(1,2),(2,3),(3,2)]((1,2),(2,3),(3,2))一樣。使用pydot顯示邊緣集的有向圖

我初始化pydot對象g如下:

g = pydot.Dot() 
g.set_type('digraph') 

在那之後,我發現那裏有沒有一個函數喜歡add_edge_from,只有擁有g一個add_edge功能。這是否意味着我必須逐個產生邊緣?

也許我可以從開始時按照以下方式設置邊緣創建圖形。

g=pydot.graph_from_edges(edge_set) 

但我覺得它會產生一個無向圖:(

順便說一句,我試着體會到使用networkx和成功的圖形。但是,它的花哨和迂迴放映演示模式,附加更多對節點以外的邊緣的重要性(對不起,這只是我的意見,當然你可能會不同意它),現在不符合我想要的。

那麼有人對我有什麼想法或建議嗎?有沒有現成的方法可以使用?感謝您的幫助!

回答

1
In [1]: import networkx as nx 

In [2]: G = nx.DiGraph([(1,2),(2,3),(3,2)]) 

In [3]: from networkx.drawing.nx_pydot import write_dot 

In [4]: write_dot(G,'file.dot') 

In [5]: !dot -Tpng file.dot >file.png 

enter image description here

+0

預先感謝您。不幸的是,我找不到In [5]的含義(無法執行),In [4]給我ImportError:沒有名爲pydotplus的模塊。你能幫我說清楚嗎?順便說一下,我在Python 2.7中使用Pycharm作爲IDE。 –

+0

然後我讓Spyder運行你上面給出的代碼。 ImportError現在不再存在。但是控制檯仍然說In [5]中的SyntaxError:invalid語法:( –

+0

)它是IPython的輸出,你只需要冒號(:)之後的部分,第4行產生一個點文件,你可以用通常的方式渲染graphviz – Aric