如何将NetworkX图转换为igraph对象(从Python到R)

3

我有两个使用Networkx(基于Python 3.8)从头构建的图形对象。为了更好地理解情况,这是一个摘要片段:

G = nx.Graph()
Z = nx.Graph()

#some work here to get data for nodes and edges

G.add_nodes_from([(data["id"], {"origin": data["origin"], "text": data["text"]})])

#some other work in order to hash data for improved nodes privacy

G.add_edge(h.hexdigest(), data["x"])
Z.add_edge(h.hexdigest(), data["x"], weight=polarity) #here polarity is a simple double value

现在的问题是,我想导出这些对象以便在RStudio和igraph包中进行一些工作。到目前为止,我尝试了以下几件事情(但都没有成功):
  1. 导出一个直接的邻接表(但在RStudio中我会出现错误,与它期望一个方阵有关,我不太记得了)
  2. 导出边缘列表(但我会得到另一种类型的错误,似乎无法使用权重表示)
  3. 使用一个简单的方法,将其导出为gml格式,然后安装python-igraph,在函数Read_Adjacency()中读取gml文件,再用函数Write_Adjacency()重新导出(希望通过这个中间步骤可以使igraph能够理解格式)
  4. 我尝试了这里提出的解决方案,但也没有成功
我该怎么做?
这是我在RStudio中使用的代码:
ADJACENCY=read.csv("myadjlist.csv",header=FALSE,row.names=NULL,sep=";")
ADJACENCY=as.matrix(ADJACENCY)
#then we create the graph
G=graph_from_adjacency_matrix(ADJACENCY, mode="undirected")

错误信息如下:

在structure_generators.c:274处报错:非方阵矩阵,非方阵矩阵

这是我的邻接表:

链接


请提供更多的细节。例如,分享您正在使用的邻接表,并发布您收到的具体错误。如果我们看不到涉及的对象类型和错误,那么很难给予帮助。 - nicola
看起来 ADJACENCY 实际上不是一个邻接矩阵。请使用 dput 共享它,以便我们可以检查它。 - nicola
好的,现在我已经编辑过了。 - docdev
该文件看起来并不像是邻接表。你看到了吗?应该如何解释它?例如,一行是:820976985387313;d54fd34cbddc270cafac961fa721b4406cc6de97;1c0e32c2bebad24ad7a06350a909788643ed13aa;ec13d5dd8f9e011e3114bd23404fe1a50da875aa。这意味着什么? - nicola
我刚刚在Python中使用了Networkx库的函数nx.write_adjlist(G, "my csv")。因此,我期望输出是一个邻接表。我对这行代码的理解是节点820976985387313d54fd34cbddc270cafac961fa721b4406cc6de97相连,直到遇到换行符为止。 - docdev
1个回答

2

2
文档链接似乎已更改为https://igraph.org/python/doc/api/igraph.Graph.html#from_networkx。 - rlchqrd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接