python-3.x 在networkx中为图指定节点名称

xriantvc  于 2022-11-19  发布在  Python
关注(0)|答案(1)|浏览(187)

我尝试使用下面的代码从 Dataframe 生成networkx图:

import pandas as pd
import numpy as np
import networkx as nx

data = [[0,0,0,1], [1,0,0,1], [1,0,0,1], [0,0,0,0]]
df = pd.DataFrame(data, columns=['S1', 'S2', 'S3', 'S4'])
df.index = ['S1', 'S2', 'S3', 'S4']

G = nx.DiGraph(df.values, with_labels=True)
nx.draw(G)

但是,图表输出时不显示节点的名称,如下所示

我尝试使用networkx relabel_nodes标记图中的节点,但没有成功

G = nx.relabel_nodes(G, dict(enumerate(df.columns)))
nx.draw(G)

有没有一种方法可以将networkx图中的节点标记为S1, S2, S3, S4

biswetbf

biswetbf1#

重命名应该是以旧节点标识符为键,以新节点标识符为值的Map(基本上是字典):

mapping = {0: "S1", 1: "S2", 2: "S3", 3: "S4"}
H = nx.relabel_nodes(G, mapping)
print(H.nodes)
# ['S1', 'S2', 'S3', 'S4']

相关问题