我试图根据my_value中定义的权重以蓝色(cmap = plt.cm.Blues)绘制节点网络。该代码生成的网络权重正确,但只有黑色。
请帮助我。谢谢您。
else
答案 0 :(得分:0)
要获得所需的节点着色,需要使用参数node_color
,cmap
,vmin
和vmax
。 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()
输出图将与此类似: