【问题标题】:How to represent graphs with IPython如何用 IPython 表示图形
【发布时间】:2015-06-28 17:25:43
【问题描述】:

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

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

类似这样的:

有这样的吗?

【问题讨论】:

标签: python graph ipython networkx


【解决方案1】:

您可以使用networkx,如果您需要在 ipython notebook 中渲染图形,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')

【讨论】:

  • 谢谢,这正是我想要的。我对有价值的图有一个小问题。我应该手动打印估值还是有参数?我找了,但在图书馆里没找到nxpd
  • nxpd可以用pip install nxpd安装
【解决方案2】:

你可以使用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')

然后在一个markdown块中:

![graph](graph.png)

渲染到:

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      已经有an answer 使用networkxnxpd,但是networkx 本身可以通过matplotlib 直接绘图(所以你不需要nxpd):

      import networkx as nx
      
      %matplotlib inline
      
      g = nx.DiGraph()
      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)])
      
      nx.draw_planar(g, with_labels=True)
      

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

      【讨论】:

      • 我尝试了另一个答案,但似乎 pip 选择了两个包的不兼容版本。这个答案使我免于弄清楚
      猜你喜欢
      • 2016-02-24
      • 2015-08-02
      • 1970-01-01
      • 1970-01-01
      • 2010-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-19
      相关资源
      最近更新 更多