您好,登錄后才能下訂單哦!
這篇文章主要介紹“Python關系圖數據可視化效果有哪些”,在日常操作中,相信很多人在Python關系圖數據可視化效果有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Python關系圖數據可視化效果有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
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關系圖數據可視化效果有哪些”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。