簡體   English   中英

繪制大量的networkx圖:數組太大

[英]Drawing massive networkx graph: Array too big

我正在嘗試繪制帶有加權邊的networkx圖,但是現在我遇到了一些困難。

如標題所示,此圖非常巨大:

節點數:103362邊數:1419671

當我嘗試使用以下代碼繪制此圖時:

pos = nx.spring_layout(G)
nx.draw(G, node_color='#A0CBE2',edge_color='#BB0000',width=2,edge_cmap=plt.cm.Blues,with_labels=False)
plt.savefig("edge_colormap.png") # save as png
plt.show() # display

(這只是我測試的功能,而不是我想要的最終結果)。 我得到錯誤:

ValueError:數組太大。

它是由spring_layout算法觸發的。 知道是什么原因造成的嗎? 即使使用其他pos算法時,我也會遇到相同的錯誤,如何避免(如果可以的話)?

另外,我想根據邊緣的重量對邊緣進行着色。 如您所見,邊緣很多,權重范圍很廣,最好的方法是什么?

謝謝你的耐心。

根據我的評論編輯:

我正在嘗試調查我擁有的數據的密度。 基本上,我正在看50,000場比賽,每場比賽有10位玩家,每當有兩位玩家在游戲中碰面時,我+1他們之間優勢的權重。 我的想法是,最終結果將向我展示數據集的優勢。 在我的腦海中,我想要最重的邊緣在中心,並且當我們從中心移出時,數據的連接密度降低了。

問題在於spring_layout方法。 有了這么多節點,將需要一段時間來計算所有節點之間的相對位置。 對於這么多節點,我建議您自己弄清楚x,y位置,或繪制更小的子圖。 (<5000個節點,或者您的計算機在一段時間內可能會變慢。

這是erdos_renyi_graph(隨機選擇的邊)中的1000個節點的樣子。 在此處輸入圖片說明

它拉下2個節點以突出顯示。

接下來是1500的樣子 在此處輸入圖片說明 它有更多細節。 現在有7-8個有趣的節點。

圖上如此多的邊緣和如此之多的節點並沒有什么好處。 如果您不喜歡輸出,將會發生什么,您將需要重新運行它。

為了獲得每個節點的x,y位置,請看一下。 在NetworkX中,顯示節點位於精確(x,y)位置的圖。 結果輪換

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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