【Python】數據可視化之熱力圖

?熱力圖(Heatmap)是一種通過顏色深淺來展示數據分布、密度和強度等信息的可視化圖表。它通過對色塊著色來反映數據特征,使用戶能夠直觀地理解數據模式,發現規律,并作出決策。

目錄

基本原理

sns.heatmap

代碼實現


基本原理

熱力圖本質上是一個數值矩陣,圖上每一個色塊都代表一個數值。通過離散數值、權重算法與分析模型等技術手段,將用戶行為頻度或數據密度以色塊的形式展現出來。在設計時,需要指定顏色映射的規則,例如較大的值可以由較深的顏色或偏暖的顏色表示,而較小的值則由較淺的顏色或較冷的顏色表示。

兩個變量之間相關系數的計算公式為:

$\mathrm{p}_{\mathrm{X}_1\mathrm{X}_2}=\frac{\mathrm{Cov}(\mathrm{X}_1,\mathrm{X}_2)}{\sqrt{\mathrm{DX}_1,\mathrm{DX}_2}}=\frac{\mathrm{EX}_1\mathrm{X}_2-\mathrm{EX}_1*\mathrm{EX}_2}{\sqrt{\mathrm{DX}_1*\mathrm{DX}_2}}$

ρ表示相關系數,Cov表示協方差,E表示數學期望/均值。值得注意的是,該相關系數主要用以量化變量之間的線性關聯強度;具體而言,當相關系數較高時,它指示了變量間存在較強的線性相關性。然而,對于相關系數較低的兩個變量而言,這僅僅表明它們之間的線性相關程度較弱,而并非意味著這兩個變量之間完全不存在其他類型的關聯,如非線性(如曲線)關系或其他復雜的相關性。因此,在解釋相關系數時需謹慎,避免過度簡化或誤讀變量間的關系。

sns.heatmap

sns.heatmap 是 Seaborn 庫中的一個非常有用的函數,用于繪制熱力圖(Heatmap)。熱力圖是一種通過顏色深淺來表示數據大小的圖形,常用于展示矩陣或表格數據的分布和關系。在數據可視化中,熱力圖尤其適合展示變量之間的相關性、數據的聚類情況或數據的密度分布等。

sns.heatmap涉及到一些主要的參數:

  • vmin, vmax:這兩個參數用于設置熱力圖中顏色映射的最小值和最大值,可以調整顏色映射的范圍以更好地展示數據。
  • cmap:指定顏色映射表(colormap),用于控制熱力圖中顏色的分布和變化。
  • annot:如果設置為True,則在每個單元格中顯示數據值。也可以是一個形狀與數據相同的數組,用于自定義注釋內容。
  • fmt:當annot為True時,用于設置注釋的格式化字符串。
  • linewidths:設置熱力圖單元格之間的線條寬度。
  • linecolor:設置熱力圖單元格之間線條的顏色。
  • cbar:是否顯示顏色條。
  • square:如果為True,則強制熱力圖的每個單元格都是正方形的。
  • mask:一個布爾數組或DataFrame,用于指定哪些單元格應該被屏蔽(不顯示)。這對于繪制下三角或上三角矩陣特別有用。

代碼實現

# 生成一個3x3的隨機數組
values = np.random.rand(3, 3)
# 設置x軸標簽
x_ticks = ['x-1', 'x-2', 'x-3']
# 設置y軸標簽
y_ticks = ['y-1', 'y-2', 'y-3'] 
# 使用seaborn庫繪制熱圖,并設置x軸和y軸標簽
ax = sns.heatmap(values, xticklabels=x_ticks, yticklabels=y_ticks)
# 設置圖表標題
ax.set_title('3x3 Heatmap') 
# 設置x軸標簽
ax.set_xlabel('x label')  
# 設置y軸標簽
ax.set_ylabel('y label')
# 顯示圖表
plt.show()

uniform_data = np.random.rand(10, 12) 
ax = sns.heatmap(uniform_data)

通過annot參數設置可以在小方格中顯示數值

# 生成一個10行12列的隨機數矩陣
uniform_data = np.random.rand(10, 12)
# 使用seaborn庫中的heatmap函數繪制熱力圖,annot參數設置為True表示在熱力圖上顯示數據值
ax = sns.heatmap(uniform_data, annot=True)

可以創建一個與相關系數矩陣相同大小的布爾矩陣,用于遮罩,實現更加簡化美觀的效果。

布爾矩陣(Boolean Matrix)是數學中的一個重要概念,它指的是元素只取0或1的矩陣,因此也被稱為0-1矩陣。布爾矩陣在計算機科學、編碼理論、網絡理論等領域有著廣泛的應用。在數學上,布爾矩陣通常使用大寫字母(如A, B, C等)表示,矩陣中的元素使用小寫字母加下標(如a_ij)表示,其中i表示行號,j表示列號。

# 導入ascii_letters模塊
from string import ascii_letters
# 設置seaborn的樣式為white
sns.set(style="white")
# 創建一個隨機數生成器
rs = np.random.RandomState(33)
# 創建一個100行26列的DataFrame,數據為正態分布隨機數
d = pd.DataFrame(data=rs.normal(size=(100, 26)),columns=list(ascii_letters[26:]))
# 計算DataFrame的相關系數矩陣
corr = d.corr()
# 創建一個與相關系數矩陣相同大小的布爾矩陣,用于遮罩
mask = np.zeros_like(corr, dtype=bool)
# 將上三角矩陣的元素設置為True
mask[np.triu_indices_from(mask)] = True
# 創建一個11x9的子圖
f, ax = plt.subplots(figsize=(11, 9))
# 創建一個顏色映射
cmap = sns.diverging_palette(220, 10, as_cmap=True)
# 繪制熱力圖,使用遮罩,顏色映射,最大值為0.3,中心值為0,方格,邊框寬度為0.5,顏色條縮小為0.5
sns.heatmap(corr, mask=mask, cmap=cmap, vmax=.3, center=0,square=True, linewidths=.5, cbar_kws={"shrink": .5})

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/96065.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/96065.shtml
英文地址,請注明出處:http://en.pswp.cn/web/96065.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何 正確使用 nrm 工具 管理鏡像源

目錄 nrm 是啥? nrm 的安裝 查看你當前已有的鏡像源 怎么切換到目標鏡像源 添加鏡像源 刪除鏡像源 測試鏡像源速度 nrm 是啥? 鏡像源:可以理解為,你訪問或下載某jar包或依賴的倉庫。 nrm(Node Registry Manag…

關于對逾期提醒的定時任務~改進完善

Spring Boot 中實現到期提醒任務的定時Job詳解在金融或借貸系統中,到期提醒是常見的功能需求。通過定時任務,可以定期掃描即將到期的借款記錄,并生成或更新提醒信息。本文基于提供的三個JobHandler類(FarExpireRemindJob、MidExpi…

springboot配置請求日志

springboot配置請求日志 一般情況下,接口請求都需要日志記錄,Java springboot中的日志記錄相對復雜一點 經過實踐,以下方案可行,記錄一下完整過程 一、創建日志數據模型 創建實體類,也就是日志文件中要記錄的數據格式 …

Redis(50) Redis哨兵如何與客戶端進行交互?

Redis 哨兵(Sentinel)不僅負責監控和管理 Redis 主從復制集群的高可用性,還需要與客戶端進行有效的交互來實現故障轉移后的透明連接切換。下面詳細探討 Redis 哨兵如何與客戶端進行交互,并結合代碼示例加以說明。 哨兵與客戶端的交…

【.Net技術棧梳理】04-核心框架與運行時(線程處理)

文章目錄1. 線程管理1.1 線程的核心概念:System.Threading.Thread1.2 現代線程管理:System.Threading.Tasks.Task 和 Task Parallel Library (TPL)1.3 狀態管理和異常處理1.4 協調任務:async/await 模式2. 線程間通信2.1 共享內存與競態條件2…

(JVM)四種垃圾回收算法

在 JVM 中,垃圾回收(GC)是核心機制之一。為了提升性能與內存利用率,JVM 采用了多種垃圾回收算法。本文總結了 四種常見的 GC 算法,并結合其優缺點與應用場景進行說明。1. 標記-清除(Mark-Sweep)…

論文閱讀:VGGT Visual Geometry Grounded Transformer

論文閱讀:VGGT: Visual Geometry Grounded Transformer 今天介紹一篇 CVPR 2025 的 best paper,這篇文章是牛津大學的 VGG 團隊的工作,主要圍繞著 3D 視覺中的各種任務,這篇文章提出了一種多任務統一的架構,實現一次輸…

python編程:一文掌握pypiserver的詳細使用

更多內容請見: python3案例和總結-專欄介紹和目錄 文章目錄 一、 pypiserver 概述 1.1 pypiserver是什么? 1.2 核心特性 1.3 典型應用場景 1.4 pypiserver優缺點 二、 安裝與基本使用 2.1 安裝 pypiserver 2.2 快速啟動(最簡模式) 2.3 使用私有服務器安裝包 2.4 向私有服務…

Git reset 回退版本

- 第 121 篇 - Date: 2025 - 09 - 06 Author: 鄭龍浩(仟墨) 文章目錄Git reset 回退版本1 介紹三種命令區別3 驗證三種的區別3 如果不小心git reset --hard將「工作區」和「暫存區」中的內容刪除,剛才的記錄找不到了,怎么辦呢&…

ARM 基礎(2)

ARM內核工作模式及其切換條件用戶模式(User Mode, usr) 權限最低,運行普通應用程序。只能通過異常被動切換到其他模式。快速中斷模式(FIQ Mode, fiq) 處理高速外設中斷,專用寄存器減少上下文保存時間,響應周期約4個時鐘周期。觸發條件為FIQ中…

Flutter 性能優化

Flutter 性能優化是一個系統性的工程,涉及多個層面。 一、性能分析工具(Profiling Tools) 在開始優化前,必須使用工具定位瓶頸。切忌盲目優化。 1. DevTools 性能視圖 DevTools 性能視圖 (Performance View) 作用:…

Spring事件監聽機制(三)

為了理解EvenListener注解的底層原理,我們可以自己實現一個類似的注解模擬實現。1.定義MyListener注解Target({ElementType.METHOD})Retention(RetentionPolicy.RUNTIME)public interface MyListener {}2.注解使用Componentstatic class SmsService {private static…

基于Springboot + vue3實現的小區物業管理系統

項目描述本系統包含管理員和用戶兩個角色。管理員角色:用戶管理:管理系統中所有用戶的信息,包括添加、刪除和修改用戶。房屋信息管理:管理房屋信息,包括新增、查看、修改和刪除房屋信息。車輛信息管理:管理…

交叉熵和KL散度

這個問題之前我也是傻傻分不清,決定整理一下,用更印象深刻的方式讓人記住。核心聯系:交叉熵 KL 散度 真實分布的熵 交叉熵作為 “絕對” 度量,會綜合真實分布的熵(固有難度)與預測誤差,直接體…

HTML 各種事件的使用說明書

HTML 各種事件的使用說明書 1. HTML 事件簡介 HTML事件是瀏覽器或用戶在網頁上執行的動作或發生的事情。當這些事件發生時,可以通過JavaScript來響應和處理這些事件,從而實現網頁的交互功能。事件處理是Web前端開發中實現動態交互的核心機制。 基本概…

Kafka面試精講 Day 10:事務機制與冪等性保證

【Kafka面試精講 Day 10】事務機制與冪等性保證 在分布式消息系統中,如何確保消息不丟失、不重復,是系統可靠性的核心挑戰。Kafka自0.11版本起引入了冪等性Producer和事務性消息機制,徹底解決了“至少一次”語義下可能產生的重復消息問題&am…

時序數據庫簡介和安裝

一、簡介1. 什么是時序數據庫?時序數據庫是專門用于存儲和處理時間序列數據的數據庫系統。時間序列數據是指按時間順序索引的一系列數據點。每個數據點都包含:一個時間戳:記錄數據產生的時間。一個或多個指標值:例如溫度、濕度、C…

comfyUI 暴露網絡restful http接口

https://zhuanlan.zhihu.com/p/686893291 暴露websocket接口。 打開開發者選項 如圖

linux系統address already in use問題解決

linux系統上某個端口被占用,如何解決?1.找到占用的進程編號:netstat -tulnp | grep :80002.強制殺死該進程kill -9 80603其他說明:1.查找占用端口的進程,可以用:lsof -i :8001 # 或者使用 netstat -tulnp |…

基于SpringBoot的家政保潔預約系統【計算機畢業設計選題 計算機畢業設計項目 計算機畢業論文題目推薦】

🍊作者:計算機編程-吉哥 🍊簡介:專業從事JavaWeb程序開發,微信小程序開發,定制化項目、 源碼、代碼講解、文檔撰寫、ppt制作。做自己喜歡的事,生活就是快樂的。 🍊心愿:點…