2017-10-17 158 views
-1

我迷失在所有的python庫中繪製圖形。我希望我知道一個靈活且與文檔 ...在Python中繪製圖形 - pydotplus錯誤

我已經花了大量的時間與networkx打去發現它不適合我的任務一樣好(如標籤重疊的大圖) 。現在

,我試圖用pydotpydotplus,但沒有文件,沒有合理的例子在那裏。或者我錯過了什麼? Pydotplus網站提供了一個參考,但這對初學者並不完全有幫助。

現在,我能畫一個圖表,pydotplus,但我想改變的節點位置(Fruchterman-萊因戈爾德算法),尤其是使用的顏色和大小與節點,但我不知道怎麼樣。

示例代碼:

import pydotplus as ptp 

graph = ptp.Dot(graph_type='graph') 
edges = [(1,2), (1,3), (2,4), (2,5), (3,5)] 
nodes = [(1, "A", "r"), (2, "B", "g"), (3, "C", "g"), (4, "D", "r"), (5, "E", "g")] 
for e in edges: 
    graph.add_edge(ptp.Edge(e[0], e[1])) 
for n in nodes: 
    node = ptp.Node(name=n[0], attrs={'label': n[1], 'fillcolor': n[2]}) 
    graph.add_node(node) 
graph.write_png("file.png") 

這將引發異常:

InvocationException: Program terminated with status: 1. stderr follows: 
Error: /tmp/tmpznciMx: syntax error in line 7 near '{' 
+0

哪一個最好?如果我見過一個基於意見的問題。 – asongtoruin

+0

@ason​​gtoruin:我已經指定了我所關心的參數。 – galapah

+0

您應該閱讀[help/on-topic]和[ask] – pvg

回答

0

問題解決了,感謝@pgv。

  • 問題1:節點參數需要的鍵值對,而不是一個字典
  • 問題2要傳遞:填充顏色本身並不工作,參數樣式必須設置爲「裝」

已更正的代碼:

import pydotplus as ptp 

graph = ptp.Dot(graph_type='graph') 
edges = [(1,2), (1,3), (2,4), (2,5), (3,5)] 
nodes = [(1, "A", "r"), (2, "B", "g"), (3, "C", "g"), (4, "D", "r"), (5, "E", "g")] 
for e in edges: 
    graph.add_edge(ptp.Edge(e[0], e[1])) 
for n in nodes: 
    node = ptp.Node(name=n[0], label= n[1], fillcolor=n[2], style="filled") 
    graph.add_node(node) 
graph.write_png("file.png")