![](/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.