首页 > 解决方案 > 将networkx图转换为igraph图时出现问题

问题描述

我希望获取在 networkx 中创建的图形 G 并将其转换为 igraph g,以便与 leidenalg 社区检测包一起使用。这曾经对我有用,但现在我遇到了问题。

在运行 Catalina OSX 的 Mac 上的 Jupyter 笔记本中使用 Python 3。Python-igraph 是 0.7.1.post7 版本。

import numpy as np
import networkx as nx
import igraph as ig
A=np.matrix([[0,7,7,0,0],[7,0,6,0,0],[7,6,0,2,1],[0,0,2,0,4],[0,0,1,4,0]])
G=nx.from_numpy_matrix(A)
nx.write_graphml(G,'graph.graphml')
g = ig.read('graph.graphml',format="graphml")

错误消息说“模块'igraph'没有属性'read'”将最后一行替换为

g=ig.Read_GraphML('graph.graphml')

不会消除错误消息。

出于某种原因,这确实适用于带有 Python 3.7 的 Spyder

标签: pythonnetworkxigraph

解决方案


我的猜测是您在 virtualenv 中安装了错误的软件包。

有2个图书馆:

  1. igraph(安装pip install igraph
  2. python-igraph(安装brew install igraph && pip install python-igraph)。这是包含read方法的那个。

两者都可以称为import igraph

尝试运行pip freeze以检查您的环境中是否安装了正确的软件包。


推荐阅读