假设我有这样一个数据帧,其中列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如何生成此图的图像表示形式,如下所示:

发布于 2020-11-24 13:46:51
Networkx是python中的图形库:https://networkx.org/documentation/stable/index.html
首先进行导入:
import networkx as nx要启动一个声明初始化DiGraph (有向图)的图:
G = nx.DiGraph()然后添加一些节点:
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)如果结点或边已经存在,则不会添加新的结点或边,因此无需担心
发布于 2020-11-24 13:44:22
您还可以使用graphviz库:
from graphviz import Digraph
dot = Digraph()
for i, (a, b) in df.iterrows():
dot.edge(str(a), str(b))
dot.render('graph.gv', view=True)https://stackoverflow.com/questions/64980775
复制相似问题