绘制网络图并将边权重添加到网络边 python
Plot Network Graph and add edge weights to network edges python
我正在尝试使用如下示例数据绘制网络图:-
From To Density
0 A B 296
1 B C 258
2 C D 296
3 D E 274
4 E F 272
5 F G 195
6 G H 286
7 H I 257
8 I J 204
9 J K 66
我想在边缘添加密度数字,例如 A 到 B 已经完成了多少次,然后休息。每条边的密度值都应高于节点 edge/arrow。
这是我目前尝试过的方法:-
G = nx.from_pandas_edgelist(network_data,'FROM','TO', edge_attr='COUNT',create_using=nx.DiGraph())
fig, ax = plt.subplots(figsize=(20,15))
pos = nx.kamada_kawai_layout(G)
nx.draw_networkx_nodes(G,pos, ax = ax,node_size=1500)
nx.draw_networkx_edges(G, pos, ax=ax)
labels = nx.get_edge_attributes(G,'COUNT')
_ = nx.draw_networkx_labels(G, pos, ax=ax)
nx.draw_networkx_edge_labels(G,pos,edge_labels=labels)
plt.show()
但是这个解决方案不会给出箭头,它只会给出 2 个节点之间的权重。而且由于数据量很大,情节看起来很笨拙。
我见过一些增加边缘宽度的解决方案,但在我的情况下不起作用,因为我有 3 位数的密度。我对此很陌生,我们将不胜感激。提前致谢
您可以使用 networkx.
具体来说,您可以从字典创建一个 networkx 图,如:
import networkx as nx
dod = {'A': {'B': {"weight": 256}},
'B':{'C':{'weight':258}},
'C':{'D':{'weight':296}}}
G = nx.from_dict_of_dicts(dod)
如果你想画画:
pos=nx.spring_layout(G)
labels = nx.get_edge_attributes(G,'weight')
nx.draw(G,pos)
nx.draw_networkx_edge_labels(G,pos,edge_labels=labels)
我正在尝试使用如下示例数据绘制网络图:-
From To Density
0 A B 296
1 B C 258
2 C D 296
3 D E 274
4 E F 272
5 F G 195
6 G H 286
7 H I 257
8 I J 204
9 J K 66
我想在边缘添加密度数字,例如 A 到 B 已经完成了多少次,然后休息。每条边的密度值都应高于节点 edge/arrow。
这是我目前尝试过的方法:-
G = nx.from_pandas_edgelist(network_data,'FROM','TO', edge_attr='COUNT',create_using=nx.DiGraph())
fig, ax = plt.subplots(figsize=(20,15))
pos = nx.kamada_kawai_layout(G)
nx.draw_networkx_nodes(G,pos, ax = ax,node_size=1500)
nx.draw_networkx_edges(G, pos, ax=ax)
labels = nx.get_edge_attributes(G,'COUNT')
_ = nx.draw_networkx_labels(G, pos, ax=ax)
nx.draw_networkx_edge_labels(G,pos,edge_labels=labels)
plt.show()
但是这个解决方案不会给出箭头,它只会给出 2 个节点之间的权重。而且由于数据量很大,情节看起来很笨拙。
我见过一些增加边缘宽度的解决方案,但在我的情况下不起作用,因为我有 3 位数的密度。我对此很陌生,我们将不胜感激。提前致谢
您可以使用 networkx.
具体来说,您可以从字典创建一个 networkx 图,如:
import networkx as nx
dod = {'A': {'B': {"weight": 256}},
'B':{'C':{'weight':258}},
'C':{'D':{'weight':296}}}
G = nx.from_dict_of_dicts(dod)
如果你想画画:
pos=nx.spring_layout(G)
labels = nx.get_edge_attributes(G,'weight')
nx.draw(G,pos)
nx.draw_networkx_edge_labels(G,pos,edge_labels=labels)