Similarly to this question ,我想使用以下代码从单个 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)

如何在笔记本上显示来自 [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()

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

最佳答案

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

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_()))

同样可用于支持 _repr_svg_()_repr_png_() 的任何对象,因此到目前为止这不受 igraph-python 的限制。

关于python - 从单个 jupyter/ipython 单元绘制多个 python-igraph 图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45015746/

10-12 22:44