ema*_*max 7 python matplotlib networkx
我生成了一个图表networkx
import networkx as nx
s = 5
G = nx.grid_graph(dim=[s,s])
nodes = list(G.nodes)
edges = list(G.edges)
p = []
for i in range(0, s):
for j in range(0, s):
p.append([i,j])
for i in range(0, len(nodes)):
G.nodes[nodes[i]]['pos'] = p[i]
pos = {}
for i in range(0, len(nodes)):
pos[nodes[i]] = p[i]
nx.draw(G, pos)
Run Code Online (Sandbox Code Playgroud)
现在我想为0和之间的每个节点分配一个值4
from random import randint
val = []
for i in range(0, len(G.nodes())):
val.append(randint(0,4))
Run Code Online (Sandbox Code Playgroud)
我想为列表中的每个节点分配颜色并绘制如下val所示的内容
networkx.draw具有node_color、vmin、vmax 和 cmap参数:
cmap(Matplotlib 颜色图,可选(默认=无))\xe2\x80\x93 用于映射节点强度的颜色图
\n\nvmin,vmax (浮点数,可选(默认=无)) \xe2\x80\x93 节点颜色图缩放的最小值和最大值
\n\nnode_color (颜色字符串,或浮点数组,(默认=\xe2\x80\x99#1f78b4\xe2\x80\x99)) \xe2\x80\x93 节点颜色。可以是单一颜色格式字符串,也可以是与节点列表长度相同的颜色序列。如果指定了数值,它们将使用 cmap 和 vmin、vmax 参数映射到颜色。有关更多详细信息,请参阅 matplotlib.scatter。
\n\n您可以在其中编写一个列表,以便您的节点被着色(例如):
\n\ncolors = [i/len(G.nodes) for i in range(len(G.nodes))]\n...\n...\nnx.draw(G, pos, node_color=colors)\nRun Code Online (Sandbox Code Playgroud)\n\n\n
要设置节点属性,您可以使用:
nx.set_node_attributes(G, val, 'val')
Run Code Online (Sandbox Code Playgroud)
Networkx 绘制调用到draw_networkx_nodes,这需要一个 cmap 和颜色列表,所以您所要做的就是:
nx.draw(G, pos, node_color = nx.get_node_attributes(G,'val'), vmin=0, vmax=4, cmap = plt.cm.get_cmap('rainbow'))
Run Code Online (Sandbox Code Playgroud)