如何在Python中生成DOT语言输出
我正在尝试从推特上收集数据,并通过Graphviz来可视化这些数据。我已经安装了Graphviz,现在我想通过Python生成一个DOT语言的输出,但我遇到了一个问题,就是我的代码没有任何反应。我想知道我的代码是否生成了DOT文件,如果生成了,那这个DOT文件在哪里呢?下面是我的代码。
OUT ="Paul_search_results.dot"
try:
nx.drawing.write_dot(g, OUT)
except ImportError, e:
dot = ['"%s" -> "&s" [tweet_id=%s]'% (n1, n2, g[n1][n2]['tweet_id'])\
for n1, n2 in g.edges()]
f = open(OUT, 'w')
f.write('strict digraph {\n%s\n}' % (';\n'.join(dot),))
f.close()
我使用的是Windows系统,我知道我不能用easy_install pygraphviz
,但上面的代码应该能达到同样的效果。根据书上的说法,运行这段代码后我应该能得到DOT语言的输出。但我的代码没有任何反应。
我已经从推特上收集了信息,并且节点和边也准备好了。
>>> g.number_of_nodes()
235
>>> g.number_of_edges()
202
有没有人能帮我一下呢?
2 个回答
1
如果你使用了 nx.drawing.write_dot()
或 f.write()
这些命令,并且它们生成了输出到 Paul_search_results.dot
文件,那么这个文件会在你的“当前工作目录”里。至于如果你在 Windows 上直接双击这个文件,系统会把当前工作目录设置成什么,我就不太清楚了。为了避免麻烦,建议你打开一个 cmd.exe
命令提示符,手动使用 cd
命令切换到你想要保存输出的目录,然后手动运行命令,最后查看控制台输出,看看有没有错误信息。
1
你的文件保存在 Paul_search_results.dot
这个位置。如果你找不到这个文件,可以试着把文件名改成包含完整路径的名字,这样你就可以把它放到你想要的位置。
其余的代码看起来是对的,但没有看到数据的话很难判断。你设置了 f=sys.stdout
是为了能看到生成的输出。
顺便说一下,网上有一个 Graphviz 的在线版本,可以在这里找到:http://interactive.blockdiag.com
祝你的项目顺利!