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