Python 从数据帧生成网络图

Python 从数据帧生成网络图,python,graph,networkx,graphviz,Python,Graph,Networkx,Graphviz,假设我有一个数据框,其中列a-number表示具有指向b-number中节点的边的节点: a_number b_number 0 343 991 1 991 633 2 343 633 3 633 628 4 343 633 5 628 916 6 697 886 7 9

假设我有一个数据框,其中列
a-number
表示具有指向
b-number
中节点的边的节点:

    a_number    b_number
0   343              991
1   991              633
2   343              633
3   633              628
4   343              633
5   628              916
6   697              886
7   916              572
8   697              884
9   886              125
如何生成此图形的图像表示形式,如下所示: 您也可以使用该库:


Networkx是python中图形的go-to库:

首先进行导入:

import networkx as nx
要启动这样的图,请声明一个特殊化有向图(有向图):

然后添加一些节点:

G.add_node(343)
G.add_node(991)
G.add_node(633)
然后是一些边缘:

G.add_edge(343,991)
G.add_edge(991,633)
G.add_edge(343,633)
最后绘制图G:

nx.draw(G, with_labels = True, font_size=14 , node_size=2000)
使用with_labels=True,这样您就可以拥有节点编号,node_size=2000使节点变大,font_size=14使字体也变大

这是代码的输出:

现在要读取数据帧,只需执行如下循环:

for  i, (x, y) in df.iterrows():
    G.add_node(x)
    G.add_node(y)
    G.add_edge(x,y)

如果节点或边已经存在,它将不会添加新的节点或边,因此您无需担心它

如何自动读取输入数据帧?您可以添加图像吗?
nx.draw(G, with_labels = True, font_size=14 , node_size=2000)
for  i, (x, y) in df.iterrows():
    G.add_node(x)
    G.add_node(y)
    G.add_edge(x,y)