我想用Python 3中的networkx和graphviz绘制一个简单的图表:
import networkx as nx
G = nx.complete_graph(3)
nx.draw_graphviz(G)
我正在使用Ubuntu14.04和IPython3,像往常一样,我使用pip3安装了networkx,运行代码时给了我以下提示:
ImportError: pydot could not be loaded: http://code.google.com/p/pydot/
我尝试安装pydotplus并运行代码:
/usr/local/lib/python3.4/dist-packages/networkx/drawing/nx_pydot.py in pydot_layout(G, prog, root, **kwds)
294
295 if isinstance(node,list):
--> 296 node=node[0]
297 pos=node.get_pos()[1:-1] # strip leading and trailing double quotes
298 if pos != None:
IndexError: list index out of range
另外还有pydot2:
/usr/local/lib/python3.4/dist-packages/pydot.py in write(self, path, prog, format)
1893 prog = self.prog
1894
-> 1895 dot_fd = file(path, "w+b")
1896 if format == 'raw':
1897 data = self.to_string()
NameError: name 'file' is not defined
我花了很多时间搜索和安装其他的pydots和pygraphviz组合,但还是没有成功。
虽然这可能与以下问题有关: pydot和graphviz错误:无法导入dot_parser,将无法加载dot文件,但这并不能解决Python 3中的问题。
networkx.write_dot(G, 'graph.dot')
输出一个 .dot 文件来实现所需的结果,然后执行适当的 graphviz 输出命令,如neato -T png graph.dot > graph.png
。(需要预先安装 graphviz;请参阅 man 页面了解更多信息) - pterodragonpython3 setup.py install
,而在Python3中导入pygraphviz会出现ImportError: No module named '_graphviz'
。 - pterodragon