網(wǎng)站首頁 編程語言 正文
python關系圖的可視化主要就是用來分析一堆數(shù)據(jù)中,每一條數(shù)據(jù)的節(jié)點之間的連接關系從而更好的分析出人物或其他場景中存在的關聯(lián)關系。
這里使用的是networkx的python非標準庫來測試效果展示,通過模擬出一組DataFrame數(shù)據(jù)實現(xiàn)四種關系圖可視化。
其余還包含了pandas的數(shù)據(jù)分析模塊以及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模塊導入到我們的代碼塊中,就可以開始開發(fā)了。
#?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
這里為了避免中文亂碼的情況,分別對字體和編碼進行了統(tǒng)一化的設置處理。
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
這里我們采用了有向圖的模式來進行演示,有向圖也是在生產(chǎn)過程中最常用的一種可視化模式。
G?=?nx.DiGraph()?#?創(chuàng)建有向圖
初始化一個DataFrame數(shù)據(jù)對象作為關系圖生成的數(shù)據(jù)來源。
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、隨機分布模型
使用隨機分布模型的生成規(guī)則時,生成的數(shù)據(jù)節(jié)點會采用隨機的方式進行展示,生成的數(shù)據(jù)節(jié)點之間相對比較分散更容易觀察數(shù)據(jù)節(jié)點之間的關系指向。
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展示出圖形效果如下,并且默認已經(jīng)添加了數(shù)據(jù)權(quán)重。
2、放射數(shù)據(jù)模型
放射狀數(shù)據(jù)模型,顧名思義就是以一個數(shù)據(jù)節(jié)點為中心向周邊以發(fā)散狀的模式進行分布,使用數(shù)據(jù)節(jié)點指向多個節(jié)點的可視化展示。
缺點是如果數(shù)據(jù)不夠規(guī)范的情況下會展示成一團亂麻的情況,需要經(jīng)過特殊的可視化處理。
使用方法這里直接將上述隨機分布模型的pos模型直接替換成下面的放射狀數(shù)據(jù)模型即可。
pos?=?nx.spring_layout(G,?seed=4000,?k=2)
3、其他模型
其余兩種方式使用同樣的方式將隨機分布模型中pos模型進行替換即可實現(xiàn),這里分別展示以下實現(xiàn)效果。
特征值向量模型
pos?=?nx.spectral_layout(G)
圖形邊緣化分布模型
pos?=?nx.shell_layout(G)
原文鏈接:https://mp.weixin.qq.com/s/mfVS8ikkSLEAfuDNSjtxtg
相關推薦
- 2022-11-11 C#中ArrayList?類的使用詳解_C#教程
- 2022-01-08 Unity如何制作道具tips隨著屏幕邊界自適應變換位置,確保不超出屏幕的功能
- 2022-11-22 jupyter?notebook?自定義python解釋器的過程詳解_python
- 2022-12-09 Opencv中的cv2.calcHist()函數(shù)的作用及返回值說明_python
- 2022-11-02 Pytorch中DataLoader的使用方法詳解_python
- 2022-07-08 Python3?Loguru輸出日志工具的使用_python
- 2022-06-13 Python自動化辦公之圖片轉(zhuǎn)PDF的實現(xiàn)_python
- 2022-10-25 python繪圖之坐標軸的超詳細講解_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支