如何用IPython表示图形

时间:2015-04-21 13:48:44

标签: python graph ipython networkx

最近我发现IPython notebook这是一个强大的工具。作为一名IT学生,我一直在寻找一种用Python表示图形的方法。例如,我想知道是否有可以从中抽取的库(如numpymatplotlib?)

{ "1" : ["3", "2"],
  "2" : ["4"],
  "3" : ["6"],
  "4" : ["6"],
  "5" : ["7", "8"],
  "6" : [],
  "7" : [],
  "8" : []
}

类似的东西:

(source : developpez.com)

有类似的东西吗?

4 个答案:

答案 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')

enter image description here

答案 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)

呈现给:

graph

答案 2 :(得分:1)

已经有an answer使用networkxnxpd,但是networkx本身可以直接通过matplotlib进行绘制(因此您不需要{{ 1}}):

nxpd

enter image description here

有关更多布局算法,请参见networkx documentation

答案 3 :(得分:0)

如果您还想为图表设置动画(例如,要探索算法的工作原理),您可以使用https://github.com/mapio/GraphvizAnim