我正在使用networkx绘制大图,并且当图表很大时我遇到了问题。对于小图表一切正常,但对于大图(1k节点),它似乎在分配颜色和大小时失败。 这是一段有问题的代码
H=nx.connected_component_subgraphs(G)[0]
d=nx.degree(H)
b=nx.eigenvector_centrality(H)
pos2=nx.spring_layout(H,scale=2)
labels={}
colors={}
dim={}
for n in H.nodes():
i=0
for v in b:
if v==n:
break
i+=1
colors[n]=b.values()[i]
j=0
for w in d:
if w==n:
break
j+=1
dim[n]=d.values()[j]*40
k=0
for z in range(2):
if n in sorted(b.items(), key=lambda x:x[1],reverse=True)[z]:
labels[n]=n
nx.draw(H,
pos2,
with_labels=False,
node_size=dim.values(),
node_color=colors.values(),
cmap=plt.cm.Reds,
vmin=min(b.values()),
vmax=max(b.values())
)
我无法发布图片,因为我没有足够的声誉,但是当我说它失败时,我的意思是(一些)连接低的节点比具有高连接性的节点大,并且颜色也是如此。
知道它发生了什么?
答案 0 :(得分:0)
将关键字nodelist =与您想要绘制的节点一起传递。然后使用相同排序的列表中的颜色和大小设置node_color和node_size参数。
nodes = H.nodes()
nx.draw(H, pos2, nodelist=nodes,
node_size = [dim[n] for n in nodes],
node_color= [colors[n] for n in nodes],
cmap=plt.cm.Reds,
vmin=min(b.values()),
vmax=max(b.values()),
with_labels=False
)