簡體   English   中英

重復繪制同一圖-如何使節點處於相同位置?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM