从单个 jupyter/ipython 单元中绘制多个 python-igraph 图

Ebr*_*owi 4 python matplotlib igraph ipython-notebook jupyter-notebook

与此问题类似,我想使用以下代码从单个 ipython-notebook 单元格中绘制多个图形:

[1]:
%matplotlib inline
import igraph # it is `pip install python-igraph` on py2
import matplotlib.pyplot as plt
import numpy as np

[2]:
# draws a graph successfully
igraph.plot(igraph.Graph.Erdos_Renyi(10, .5))

[3]:
for p in np.arange(.3, .8, .1):
    g = igraph.Graph.Erdos_Renyi(10, p)
    igraph.plot(g)
Run Code Online (Sandbox Code Playgroud)

如何从[3]笔记本上的单元格显示多个图形?

如果我想绘制一些像这样的 matplotlib 图表,似乎可以使用这个解决方案:

[4]:
for p in np.arange(.3, .8, .1):
    g = igraph.Graph.Erdos_Renyi(10, p)
    plt.loglog(sorted(g.degree(), reverse=True), marker='o')
    plt.show()
Run Code Online (Sandbox Code Playgroud)

但这不适用于 igraph 图 AFAICS。有什么方法可以转换igraph.drawing.Plot为更熟悉 matplotlib 的对象吗?

Ebr*_*owi 6

我最终得到了这样的解决方案:

from IPython.core.display import display, SVG

for p in np.arange(.3, .8, .1):
    g = igraph.Graph.Erdos_Renyi(10, p)
    print(p)
    display(SVG(igraph.plot(g)._repr_svg_()))
Run Code Online (Sandbox Code Playgroud)

同样可用于任何目的,支持_repr_svg_()_repr_png_()所以这不是的igraph-蟒的限定。