事业繁忙,时间有限,没空对本程序进行解说,看官请看注释或者自行揣摩。
"""
networkx绘图示例:随机产生颜色图
"""
import numpy as np
import networkx as nx
import matplotlib.pyplot as plt
np.random.seed(1234)
p = dict((i, (np.random.uniform(0, 1), np.random.uniform(0, 1))) for i in range(200))
g = nx.random_geometric_graph(200, 0.12, pos=p) # 根据p产生随机几何图
pos = nx.get_node_attributes(g, 'pos')
print(pos==p)
# 下面查找到中间点(0.5, 0.5)最近的距离
dists = [(x - 0.5)**2 + (y - 0.5)**2 for x, y in list(pos.values())]
print(dists) # 所有节点到中间点的距离
ncenter = np.argmin(dists) # 检索数组中最小位置,返回下标
print('ncenter=',ncenter)
# 渲染图形,颜色靠的是到中间点的距离决定
p = nx.single_source_shortest_path_length(g, ncenter) # 注意重定义了p
plt.figure()
nx.draw_networkx_edges(g, pos, alpha=0.4)
nx.draw_networkx_nodes(g,pos,
nodelist=list(p.keys()),
node_size=120, alpha=0.5,
node_color=list(p.values()),
cmap=plt.cm.jet_r) # 最后一个参数是将色标逆过来
plt.show()

