图表中的节点未显示正确的标签

时间:2016-03-11 06:43:35

标签: python pandas networkx

使用pandas导入了以下矩阵。

     name1 name2 name3
name1 0     1     0
name2 1     0     1
name3 0     0     1

该图表将节点显示为数字1, 2, 3。但是,我希望节点为name1, name2, name3

请参阅我正在使用的代码:

import pandas as pd
import networkx as nx
datamuse = pd.read_csv('NetworkDatasheet.csv',index_col=0)
print(datamuse)
G = nx.DiGraph(datamuse.values)
nx.draw_random(G, with_labels=True)

1 个答案:

答案 0 :(得分:1)

这是一个有效的解决方案。为了摆脱Dataframe,我将标签直接包含在Graph属性中。

import pandas as pd
import networkx as nx

df = pd.DataFrame([[0, 1, 0], [1, 0, 1], [0, 0, 1]], 
                  index=['name1', 'name2', 'name3'], 
                  columns=['name1', 'name2', 'name3'])

# You code works, here it's more explicit
G = nx.from_numpy_matrix(df.values, create_using=nx.DiGraph())
# Set labels in each node under the key 'label', create a dict{0: 'name1', ...}
nx.set_node_attributes(G, 'label', dict(zip(xrange(len(df)), df.index.values)))
# Draw the network and specify the labels
nx.draw_random(G, with_labels=True, labels=nx.get_node_attributes(G, 'label'))