最近我发现IPython notebook
这是一个强大的工具。作为一名IT学生,我一直在寻找一种用Python表示图形的方法。例如,我想知道是否有可以从中抽取的库(如numpy
或matplotlib
?)
{ "1" : ["3", "2"],
"2" : ["4"],
"3" : ["6"],
"4" : ["6"],
"5" : ["7", "8"],
"6" : [],
"7" : [],
"8" : []
}
类似的东西:
有类似的东西吗?
答案 0 :(得分:8)
您可以使用networkx,如果您需要在ipython笔记本中渲染图表,nxpd
import networkx as nx
from nxpd import draw
G = nx.DiGraph()
G.graph['dpi'] = 120
G.add_nodes_from(range(1,9))
G.add_edges_from([(1,2),(1,3),(2,4),(3,6),(4,5),(4,6),(5,7),(5,8)])
draw(G, show='ipynb')
答案 1 :(得分:4)
您可以使用pygraphviz:
import pygraphviz
G = pygraphviz.AGraph(directed=True)
G.add_nodes_from(range(1,9))
G.add_edges_from([(1,2),(1,3),(2,4),(3,6),(4,5),(4,6),(5,7),(5,8)])
G.layout()
G.draw('graph.png')
然后在降价区块中:
![graph](graph.png)
呈现给:
答案 2 :(得分:1)
已经有an answer使用networkx
和nxpd
,但是networkx
本身可以直接通过matplotlib
进行绘制(因此您不需要{{ 1}}):
nxpd
有关更多布局算法,请参见networkx
documentation。
答案 3 :(得分:0)
如果您还想为图表设置动画(例如,要探索算法的工作原理),您可以使用https://github.com/mapio/GraphvizAnim