Networkx cmap:与网络节点颜色相关的问题

时间:2019-07-26 17:37:32

标签: python pandas dataframe networkx

我试图根据my_value中定义的权重以蓝色(cmap = plt.cm.Blues)绘制节点网络。该代码生成的网络权重正确,但只有黑色。

请帮助我。谢谢您。

else

1 个答案:

答案 0 :(得分:0)

要获得所需的节点着色,需要使用参数node_colorcmapvminvmax。 Colormap(cmap)根据定义的vmin和vmax值范围提供颜色映射。

以下是相关代码(省略了导入语句):

df1 = pd.DataFrame({'from': ['1', '2', '3', '4', '4', '4'], 'to': ['2', '3', '4', '5', '6', '7']})
carac = pd.DataFrame({'ID': ['1', '2', '3', '4', '5', '6', '7'], 'myvalue': ['0.1', '0.5', '0.1', '0.5', '0.1', '0.1', '0.2']})

G = nx.from_pandas_edgelist(df1, 'from', 'to', create_using=nx.Graph())

carac = carac.set_index('ID')
carac = carac.reindex(G.nodes())

nx.draw_networkx(G, with_labels=True, cmap=plt.cm.Blues, \
                 node_color=[np.float(t) for t in carac.myvalue.values], \
                 node_size=1500, edge_color='b', \
                 font_size=12, font_color='r', font_weight='bold', \
                 vmax=float(max(carac['myvalue'])), \
                 vmin=float(min(carac['myvalue'])))

plt.show()

输出图将与此类似:

enter image description here