求问python networkx在导入文本数据后如何改变节点颜色,代码如下:
import networkx as nx
import numpy as np
import matplotlib.pyplot as plt
import pylab
g = nx.read_edgelist('./test.txt', nodetype=int,
data=(('weight',float),), create_using=nx.DiGraph())
print(g.edges(data=True))
val_map = {'1':"red", # 点颜色
'0': "green"}
values = [val_map.get(node, 0.25) for node in g.nodes()]
edge_labels=dict([((u,v,),d['weight'])
for u,v,d in g.edges(data=True)])
red_edges = [(1,2),(0,2)]
edge_colors = ['black' if not edge in red_edges else 'red' for edge in g.edges()]
pos=nx.spring_layout(g)
nx.draw_networkx_labels(g, pos) # 显示点中字母
nx.draw_networkx_edge_labels(g,pos,edge_labels=edge_labels) # 显示边权重
nx.draw(g,pos, node_color = values, node_size=1500,edge_color=edge_colors,edge_cmap=plt.cm.Reds)
pylab.show()
**结果边能改颜色,节点颜色没变化。
希望能指点一下如何改一下点颜色,谢谢!**
详见:《Python数模笔记-NetworkX(1)图的操作》
https://blog.csdn.net/youcans/article/details/116942703
nx.draw() 和 nx.draw_networkx() 是最基本的绘图函数,并可以通过自定义函数属性或其它绘图函数设置不同的绘图要求。常用的属性定义如下:
‘node_size’:指定节点的尺寸大小,默认300
‘node_color’:指定节点的颜色,默认红色
‘node_shape’:节点的形状,默认圆形
'‘alpha’:透明度,默认1.0,不透明
‘width’:边的宽度,默认1.0
‘edge_color’:边的颜色,默认黑色
‘style’:边的样式,可选 ‘solid’、‘dashed’、‘dotted’、‘dashdot’
‘with_labels’:节点是否带标签,默认True
‘font_size’:节点标签字体大小,默认12
‘font_color’:节点标签字体颜色,默认黑色