【发布时间】:2015-11-17 23:23:44
【问题描述】:
我只想用 Python 3 networkx & graphviz 画一个简单的图:
import networkx as nx
G = nx.complete_graph(3)
nx.draw_graphviz(G)
我使用的是 ubuntu14.04 和 IPython3,像往常一样我做了 pip3 install 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 and graphviz error: Couldn't import dot_parser, loading of dot files will not be possible,这并不能解决 Python 3 中的问题。
【问题讨论】:
-
我认为 pygraphviz 依赖于解析 DOT language 这是 pydot 的工作?现在不知何故,与 Python3 不兼容的是 pydot,而不是 pygraphviz。
-
FWIW,我通过使用
networkx.write_dot(G, 'graph.dot')输出.dot 文件,然后执行适当的graphviz 输出命令,如neato -T png graph.dot > graph.png,达到了预期的效果。 (graphviz 必须预先安装;有关更多信息,请参见手册页) -
您可以将其添加为答案。有相同问题的其他人可能不会检查 cmets。
-
一些附加信息:pygraphviz 现在声称现在可以与 Python 3 一起使用,但目前我通过运行
python3 setup.py install使用源代码安装它,而 Python3 中的import pygraphviz给了我ImportError: No module named '_graphviz'.
标签: python-3.x graphviz networkx