![](/img/trans.png)
[英]NetworkX: plotting the same graph first intact and then with a few nodes removed
[英]Plotting the same graph repeatedly — how to get nodes in the same position?
我正在使用NetworkX和Matplotlib在Python中工作。
当我一遍又一遍地绘制相同的图形但颜色不同时,如何使节点每次都处于相同的位置? 现在我得到:
但是我将节点添加为字典的键,并将每个节点的颜色作为值,然后对字典进行排序,并将节点作为已排序的字典的键,并将颜色作为已排序dict的值。 相同的节点始终以相同的顺序添加。 我以为那行得通...
因此,其中x
包含节点(分支)列表:
for ct2,i in enumerate(x):
for ct,j in enumerate(i):
vertex = j[t]
if np.angle(j[t]) <0 or np.angle(j[t]) >= np.angle(cutoff):
C[vertex] = 0.0
else:
C[vertex] = .8- 3*(np.angle(j[t])/np.angle(cutoff))
COLORS = collections.OrderedDict(sorted(C.items()))
然后进行图形调用:
pos=nx.graphviz_layout(G,'dot')
nx.draw_networkx_nodes(
G,pos,nodelist=COLORS.keys(),cmap=plt.get_cmap(cmap),
node_size=nodesize,alpha=.6,vmax=1,vmin=0, node_color = COLORS.values()
)
我究竟做错了什么?
最好查看图形调用相对于循环的位置(内部?外部?)。
但是看起来循环中有pos=nx.graphviz_layout(G,'dot')
。 因此,每次在循环中,它都会重新计算pos
。 这是告诉算法将节点放置在何处的变量。 该位置有些随机,因此每次调用都会将它们放置在不同的位置(对于spring_layout来说更明显)。
如果这是您要做的,请移动
pos=nx.graphviz_layout(G,'dot')
在循环之前。 这样就不会每次都重新生成。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.