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)