簡體   English   中英

從大熊貓數據幀生成網絡圖

[英]Generate Network plot from large pandas dataframe

假設我有這個包含 3794 行 x 2 列的數據幀df ,其中列a-number表示具有指向b-number節點的有向邊的節點:

            a_number    b_number
0       0123456789343   0123456789991
1       0123456789343   0123456789633
2       0123456789343   0123456789633
3       0123456789343   0123456789628
4       0123456789343   0123456789633
... ... ...
3789    0123456789697   0123456789916
3790    0123456789697   0123456789886
3791    0123456789697   0123456789572
3792    0123456789697   0123456789884
3793    0123456789697   0123456789125
3794 rows × 2 columns

附加信息:

len(df['a_number'].unique())
>>> 18

len(df['b_number'].unique())
>>>1145

我正在嘗試生成圖形的圖像表示。 這是應用networkx的代碼:

import networkx as nx
G = nx.DiGraph()

for  i, (x, y) in df.iterrows():
    G.add_node(x)
    G.add_node(y)
    G.add_edge(x,y)
    
nx.draw(G, with_labels = True, font_size=14 , node_size=2000)

我得到這個輸出:

在此處輸入圖片說明

我在可視化使用 python-networkx 創建的圖形時遇到了一些問題,我希望能夠減少混亂並調節節點之間的距離。 請指教。 我可以對代碼做什么? 謝謝你。

首先,為了減少混亂,我首先將節點大小減小到 200 或 400。

嘗試減少 draw 函數中的 font_size 參數。 此參數調節節點標簽的大小。 由於您有大的節點名稱,這將有助於減少混亂。

如果不需要在圖形上放置標簽,則通過將 with_labels=False 傳遞給 draw 函數來刪除它們以使其更清晰。

然后要調節節點之間的距離,您可以使用節點位置的彈簧布局。

pos = nx.spring_layout(G, k=0.8)
nx.draw(G, pos , with_labels = True, font_size=7, node_size=400)

spring 布局中的 k 參數允許您調節節點之間的距離。 您可以嘗試不同的值來查看最適合您的值。

暫無
暫無

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

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