首頁 > 軟體

詳解Python中四種關係圖資料視覺化的效果對比

2022-11-28 22:00:33

python關係圖的視覺化主要就是用來分析一堆資料中,每一條資料的節點之間的連線關係從而更好的分析出人物或其他場景中存在的關聯關係。

這裡使用的是networkx的python非標準庫來測試效果展示,通過模擬出一組DataFrame資料實現四種關係圖視覺化。

其餘還包含了pandas的資料分析模組以及matplotlib的畫圖模組。

若是沒有安裝這三個相關的非標準庫使用pip的方式安裝一下即可。

pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple/

pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple/

pip install networkx -i https://pypi.tuna.tsinghua.edu.cn/simple/

分別將使用到的python模組匯入到我們的程式碼塊中,就可以開始開發了。

# Importing the matplotlib.pyplot module as plt.
import matplotlib.pyplot as plt

# Importing the pandas module and giving it the alias pd.
import pandas as pd

這裡為了避免中文亂碼的情況,分別對字型和編碼進行了統一化的設定處理。

plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False

# Importing the networkx module and giving it the alias nx.
import networkx as nx

這裡我們採用了有向圖的模式來進行演示,有向圖也是在生產過程中最常用的一種視覺化模式。

G = nx.DiGraph() # 建立有向圖

初始化一個DataFrame資料物件作為關係圖生成的資料來源。

data_frame = pd.DataFrame(
    {
        'A': ['1', '2', '3', '4', '5', '6'],
        'B': ['a', 'b', 'c', 'd', 'e', 'f'],
        'C': [1, 2, 3, 4, 5, 6]
    }
)

1、隨機分佈模型

使用隨機分佈模型的生成規則時,生成的資料節點會採用隨機的方式進行展示,生成的資料節點之間相對比較分散更容易觀察資料節點之間的關係指向。

for i, row in data_frame.iterrows():
    G.add_edge(row['A'], row['B'], weight=row['C'])

pos = nx.random_layout(G)

nx.draw(G, pos, with_labels=True, alpha=0.7)

labels = nx.get_edge_attributes(G, 'weight')

nx.draw_networkx_edge_labels(G, pos, edge_labels=labels)

plt.axis('equal')

plt.show()

通過matplotlib展示出圖形效果如下,並且預設已經新增了資料權重。

2、放射資料模型

放射狀資料模型,顧名思義就是以一個資料節點為中心向周邊以發散狀的模式進行分佈,使用資料節點指向多個節點的視覺化展示。

缺點是如果資料不夠規範的情況下會展示成一團亂麻的情況,需要經過特殊的視覺化處理。

使用方法這裡直接將上述隨機分佈模型的pos模型直接替換成下面的放射狀資料模型即可。

pos = nx.spring_layout(G, seed=4000, k=2)

3、其他模型

其餘兩種方式使用同樣的方式將隨機分佈模型中pos模型進行替換即可實現,這裡分別展示以下實現效果。

特徵值向量模型

pos = nx.spectral_layout(G)

圖形邊緣化分佈模型

pos = nx.shell_layout(G)

到此這篇關於詳解Python中四種關係圖資料視覺化的效果對比的文章就介紹到這了,更多相關Python關係圖內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com