熱圖

<image>

<image>

熱圖（heat map）在二維空間中以顏色的形式顯示一個現象的絕對量，是一種數據可視化技術。顏色的變化可能是通過色調或明度，給讀者提供明顯的視覺提示，說明現象是如何在空間上聚集或變化的。熱圖有兩種完全不同的類別：聚集熱圖和空間熱圖。在聚集熱圖中，幅度被排列成一個固定單元格大小的矩陣，其行和列是離散的現象和類別，行和列的排序是有意的，而且有些隨意，目的是暗示聚集或描繪出通過統計分析發現的聚集。單元格的大小是任意的，但足夠大，可以清晰可見。相比之下，空間熱圖中某一量級的位置是由該量級在該空間中的位置所決定的，沒有單元的概念，現象被認為是連續變化的。

雖然「熱圖」是一個新興的詞彙，但是用明暗的矩陣來標示元素的方法已經有超過一世紀的歷史了。

## 歷史

熱圖起源於數據矩陣中數值的二維顯示。較大的數值用深灰色或黑色的方格（像素）呈現，較小的數值用較淺的方格表示。Loua (1873)使用明暗矩陣來可視化巴黎各區的社會統計數據。Sneath (1957)通過將矩陣的行和列進行換位，將相似的數值按照聚類的方式放在彼此附近，來顯示聚類分析的結果。Jacques Bertin使用類似的表示方法來顯示符合累積量表的數據。將聚類樹連接到數據矩陣的行和列的想法起源於1973年的Robert Ling。Ling使用印表機上的字符來表示不同的灰度，每個像素一個字符寬度。Leland Wilkinson在1994年開發了第一個用高解析度彩色圖形繪製聚集熱圖的電腦程式（SYSTAT）。

軟體設計師Cormac Kinney在1991年註冊了「熱圖」一詞的商標，用來描述描述金融市場資訊的二維顯示。2003年收購Kinney發明的公司無意中讓該商標失效。

## 類型

<image>

熱圖有不同的種類：

- 生物學熱圖在分子生物學中通常用於表示從DNA微陣列中獲得的許多基因在一些可比樣本（如不同狀態的細胞、不同患者的樣本）中的表達水平。
- 樹圖是數據的二維層次劃分，在視覺上類似於熱圖。
- 拼貼圖（Mosaic plot）是表示雙向或多向數據表的平鋪熱圖。與樹圖一樣，拼貼圖中的矩形區域是分層組織的。這意味著這些區域是矩形而不是正方形。Friendly (1994)調查了該圖的歷史和使用情況。
- 密度函數可視化是一種用於表示地圖中點的密度的熱圖。它使人們能夠感知點的密度，而不受縮放係數的影響。Perrot et al. (2015)提出了一種使用密度函數的方法，利用Spark和Hadoop的大數據基礎設施來可視化數十億和數十億的點。

## 應用領域

熱圖因其能夠簡化數據並提供視覺上易於理解的分析而被廣泛應用於多個領域。

### 商業分析

熱圖在商業分析中用於視覺化呈現公司當前運作狀況、業績表現以及需要改進的領域。熱圖能夠分析公司現有數據並更新以反映增長和其他特定努力，為團隊成員和客戶提供視覺上的吸引力。

### 網站分析

網站使用多種類型的熱圖來確定訪問使用者的行為，通常會結合使用多個熱圖來洞察網頁上表現最好和最差的元素：

- 滑鼠追蹤熱圖（Mouse tracking heat map）：也稱為懸停圖，用於視覺化使用者在網站上懸停光標的位置
- 眼動追蹤熱圖（Eye tracking heat map）：測量網站使用者的眼睛位置，收集眼睛注視量、注視持續時間和感興趣區域等測量數據
- 點擊追蹤熱圖（Click tracking heat map）：也稱為觸摸圖，幫助視覺化使用者的點擊行為，不僅追蹤可點擊組件（如按鈕或下拉菜單），還追蹤頁面上任何位置的非可點擊對象
- AI生成注意力熱圖（AI-generated attention heat map）：使用軟體演算法確定和預測使用者在網頁特定區域的注意力
- 滾動追蹤熱圖（Scroll tracking heat map）：表示網站使用者的滾動行為，幫助產生視覺提示以顯示使用者在網站哪個部分停留時間最長

### 探索性數據分析

在處理大小數據集時，數據科學家和數據分析師使用熱圖來確定數據集中不同點之間的重要關係和特徵。熱圖使得向不同專業的團隊成員總結發現和主要組成部分變得視覺上簡單。熱圖能夠在高維空間中視覺化這些數據點及其關係，而不會變得過於緊湊和視覺上不吸引人。

### 金融分析

不同產品和資產的價值隨時間快速或逐漸波動。記錄日常市場變化的能力至關重要，使得能夠從模式中得出預測，同時能夠重新訪問過去的數值數據。熱圖能夠消除繁瑣的過程，使使用者能夠視覺化數據點並在不同表現者之間進行比較。

### 地理視覺化

熱圖用於視覺化和顯示數據的地理分布。熱圖在地圖上表示不同數據點的密度，幫助使用者看到某些現象的強度，並顯示最重要或最不重要的項目。地理視覺化中使用的熱圖有時會與面量圖混淆，但兩者在數據呈現方式上有所不同。

### 體育

熱圖可用於許多體育項目，並可根據顯示的數據高低密度影響經理和教練的決策。使用者可以識別比賽中的模式、對手和自己團隊的策略，做出更明智的決策以使球員、團隊和業務受益，並通過識別需要增強的領域來提高不同方面的表現。熱圖還視覺化同一體育項目中不同團隊之間或不同體育項目之間的比較和關係。

### 網路安全

在入侵檢測系統和日誌分析中，熱圖用於突出顯示異常訪問模式、埠掃描嘗試和惡意IP聚類。它們幫助安全運營中心（SOC）分析師快速發現大型數據集中的異常。

### 城市規劃

熱圖在城市規劃中用於視覺化交通擁堵、行人流量和環境條件，以實現數據驅動的基礎設施發展。環境熱圖追蹤空氣質量和城市熱島，指導綠地規劃。噪音污染熱圖有助於居住區附近的分區和緩解。商業規劃者使用客流量熱圖來優化零售布局。整合到智慧城市系統中，這些地圖提高了宜居性、可持續性和安全性。

## 生物資訊學中的應用

熱圖在生物資訊學中廣泛應用於視覺化大型和小型數據集。重點是DNA、RNA、基因表現等方面的模式和相似性。

### 聚類熱圖

聚類熱圖（Clustered heat map）結合了熱圖和層次聚類分析，通過將相似的樣本或基因聚集在一起來揭示數據中的模式和關係。聚類熱圖的主要組成部分包括：

- 數據矩陣：以顏色表示數值的二維矩陣，通常行代表基因，列代表樣本
- 樹狀圖（Dendrogram）：顯示行和列的層次聚類結果的樹狀結構
- 行列標籤：標識數據點，如基因名稱或樣本編號
- 色標：說明顏色與數值的對應關係

### 層次聚類方法

生成聚類熱圖時常用的層次聚類方法包括：

- 單連結（Single linkage）：使用最小距離
- 完全連結（Complete linkage）：使用最大距離
- 平均連結（Average linkage）：使用平均距離
- Ward方法：最小化類內方差

常用的距離度量方法包括：

- 歐氏距離（Euclidean distance）
- 皮爾森相關係數（Pearson correlation）
- 曼哈頓距離（Manhattan distance）

### Z-score標準化

在基因表達熱圖中，通常對數據進行Z-score標準化，以便比較不同表達水平的基因。Z-score按基因（行）計算，公式為：

$$Z = \frac{X - \mu}{\sigma}$$

其中X為特定樣本中該基因的表達值，μ為該基因在所有樣本中的平均表達值，σ為標準差。

### 軟體工具

用於生成生物資訊學熱圖的常用軟體包括：

R語言套件：

- pheatmap：功能全面的聚類熱圖套件
- heatmap3：改進的熱圖套件，支持快速聚類
- ComplexHeatmap：支持多重熱圖並列和複雜註釋
- heatmaply：用於生成互動式聚類熱圖

Python函數庫：

- seaborn.clustermap：提供自動樹狀圖生成
- matplotlib：結合scipy和pandas提供靈活繪製

專業平台：

- NG-CHM（Next-Generation Clustered Heat Maps）：由德克薩斯大學MD安德森癌症中心開發的高度互動式熱圖系統

## 配色

可以使用許多不同的配色方案來說明熱圖，每種方案都有感知上的優勢和劣勢。彩虹色彩映射經常被使用，因為相比於灰度的差異，人類更容易感知色彩的明暗，據稱這將增加圖像中可感知的細節數量。然而，科學界的許多人並不鼓勵這樣做，原因如下：

- 這些顏色缺乏在灰度或黑體光譜彩色圖中發現的自然感知排序。
- 常見的色彩映射（如許多可視化軟體包中默認的「jet」色彩映射）在亮度方面的變化不受控制，這使得在顯示或印刷時無法有意義地轉換為灰度。這也會分散對實際數據的注意力，使黃色和青色區域看起來比實際最重要的數據區域更突出。
- 顏色之間的變化也會導致人們感知到實際並不存在的漸變，使實際的漸變不那麼突出，這意味著彩虹色圖在很多情況下實際上會掩蓋細節，而不是增強細節。
- 彩虹色彩映射中並不是所有的顏色都能被色覺障礙的讀者區分，這使得相當一部分人無法使用這些顏色方案的圖表。

### 感知均勻配色方案

為克服彩虹色彩映射的缺陷，科學界推薦使用感知均勻（perceptually uniform）的配色方案。

感知均勻色彩映射的特徵包括：

- 在CIELAB色彩空間中亮度單調遞增
- 數值相近的點具有相似的顏色外觀
- 轉換為灰度時仍保持有意義的視覺層次
- 對常見的色覺缺陷（色盲）友善

常用的感知均勻配色方案包括：

- Viridis：由藍色經綠色到黃色的平滑過渡
- Plasma：由藍色經紫色到黃色
- Inferno：類似黑體輻射，由黑色到黃色
- Magma：由黑色經紫色到白色
- Cividis：viridis的色盲優化版本，對色覺缺陷者特別友善

### 設備兼容性

設備限制也會顯著影響熱圖視覺化的效果。在低解析度螢幕上顯示時，高度詳細的顏色漸變可能會出現像素化或條帶化，降低視覺化質量。設計者應考慮將顯示熱圖的所有設備及其顏色限制。綜合測試和使用顏色較少的方案是創建跨多種設備類型查看的熱圖時最安全的選擇。

### 灰度兼容性

灰度兼容性對於熱圖的可訪問性至關重要，特別是在考慮印刷媒體、黑白顯示器或單色視覺時。轉換為灰度時，許多配色方案會失去其獨特的數據映射，使不同的數值在亮度上看起來相同。灰度友好的配色方案（如viridis系列）即使在去除顏色時也能保持數據點之間的對比。

## 面量圖與熱圖的對比

面量圖有時被誤稱為熱圖。面量圖的特點是在地理邊界內有不同的陰影或圖案，以顯示感興趣的變量的比例，而熱圖（在地圖上）的顏色變化與地理邊界並不能對應上。

## 軟體實現

有幾種熱圖軟體可免費使用：

- R是一個免費的統計計算和圖形軟體環境，它包含了幾個跟蹤熱圖的功能，包括交互式聚集熱圖（通過 heatmaply R語言包）。
- Gnuplot是一個通用的免費命令行繪圖程序，可以跟蹤2D和3D熱圖。
- Google Fusion Tables可以從Google Sheets電子表格中生成熱圖，限制在1000點的地理數據。
- Dave Green的'cubehelix'配色方案提供了一種配色方案的資源，這種配色方案可以在黑白postscript設備上列印成單調增加的灰度。
- Openlayers3可以在矢量圖層中渲染所有地理特徵的選定屬性的熱圖層。
- D3.js、AnyChart和Highcharts是用於數據可視化的JavaScript庫，它們提供了創建交互式熱圖圖表的能力，從基本的到高度定製的，都是其解決方案的一部分。
- Qlik Sense允許在熱圖中以顏色模式顯示比較數據，這包含在其可視化捆綁中。
- MATLAB提供了熱圖可視化的能力，具有多種配置選項。
- Python是廣泛用於數據分析和視覺化的語言，支持多個創建熱圖的函數庫：
- Matplotlib的imshow函數將2D數值陣列視覺化為色彩編碼的圖像，可控制色彩映射和坐標軸
- Seaborn的heatmap函數以最少的代碼提供美觀精緻的熱圖，常與Pandas DataFrame一起使用
- Plotly的go.Heatmap函數創建基於HTML的互動式熱圖，允許x和y軸標籤、2D矩陣、自定義色標和詳細的懸停資訊

## 例子

<image>

- 大湖效應 – 氣象雷達資訊通常使用熱圖顯示。

<image>

- 用頻譜圖可視化的人聲；代表STFT幅度的熱圖。另一種可視化方式是瀑布圖。

<image>

- 顯示相同數據的熱圖、曲面圖和等高線之間關係的示例

<image>

- 曲面圖和熱圖的組合，其中曲面高度表示函數的振幅，顏色表示相角。

<image>

- 鏢靶上每個相鄰區域的得分（不按比例）。