如何在Python NetworkX中编写与R igraph相同的代码

2024-05-12 20:37:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我的老师使用R,现在他正在解释图论。我不想使用R,因为我使用Python并且更喜欢它,所以我想学习NetworkX(不是Python-igraph,因为我在打印图形时有很多问题

关键是,与R相比,Python代码看起来非常复杂

我更好地解释自己:如何实现这个R代码

fig <- graph.formula(a-b, c-e-d, i-k-j-g-i, f-g-j-h-f, k-j-h-l-k, h-l-m-h)

在NetworkX上

一排就可以吗?如果没有,我该怎么办

谢谢


Tags: 代码networkx图形fig老师关键graphformula
2条回答

如果您查看一下^{}igraph文档,您已经给出了这一行

fig <- graph.formula(a-b, c-e-d, i-k-j-g-i, f-g-j-h-f, k-j-h-l-k, h-l-m-h)

仅创建具有给定(无向)边和节点的图。因此,您只需要创建一个graph,就可以在^{} tutorialadd_edges_from方法中找到所需的一切

import networks as nx

graph = nx.Graph() # undirected as desired
graph.add_edges_from([("a", "b"), ("c","e"), ("e","d"), ("i","k"), ("k", "j"), ("j", "g"), ("g", "i")])

正如你所见,这是一个多一点的工作(我已经停止后,前三组)

您当然可以在networkX中实现这一点。我不知道是否有一行,但很少

下面的代码使用指定的节点和边创建一个有向图,然后绘制它。理论上,可以将所有边添加到一行中(有更快的方法可以做到这一点),但是为了更好的可读性,该代码的R代码的每个逗号分隔部分都有一行

import networkx as nx
G = nx.DiGraph() #Creates empty graph
G.add_nodes_from(range(0,13))#Adds nodes
G.add_edges_from([(0,1)])#Adds directed edges
G.add_edges_from([(2,3),(3,4)])
G.add_edges_from([(8,10),(10,9),(9,6),(6,8)])
G.add_edges_from([(5,6),(6,9),(9,7),(7,5)])
G.add_edges_from([(10,9),(9,7),(7,11),(11,10)])
G.add_edges_from([(7,11),(11,12),(12,7)])
nx.draw(G)

相关问题 更多 >