# 資料視覺化基礎

::: tip 前言
**一張好的圖表勝過一千行資料。** 資料視覺化是將抽象的數字轉化為直觀的視覺表達，讓人能在幾秒內理解數據背後的故事。從 Excel 圖表到 Grafana 監控大螢幕，視覺化無處不在。
:::

**這篇文章會帶你學什麼？**

學完這章後，你將獲得：

- **圖表選擇**：根據資料目的選擇最合適的圖表類型
- **視覺化原則**：掌握資料視覺化的核心設計原則
- **儀表板設計**：了解不同類型儀表板的佈局模式
- **工具生態**：熟悉主流視覺化工具的定位和選型
- **常見陷阱**：避免誤導性圖表和常見的視覺化錯誤

| 章節 | 內容 | 核心概念 |
|-----|------|---------|
| **第 1 章** | 圖表類型選擇 | 比較、趨勢、佔比、分佈、關係 |
| **第 2 章** | 視覺化設計原則 | 資料墨水比、一致性、可讀性 |
| **第 3 章** | 儀表板佈局 | 概覽型、對比型、下鑽型、即時型 |
| **第 4 章** | 工具選型 | ECharts、D3、Grafana、Metabase |
| **第 5 章** | 常見陷阱 | 截斷座標軸、3D 圓餅圖、顏色濫用 |

---

## 0. 全景圖：需要視覺化的動機

人類大腦處理視覺資訊的速度比處理文字快得多。一張折線圖能讓你很快看出「上個月銷售額在下降」，而同樣的資訊如果用表格呈現，你可能需要逐行對比才能得出結論。

視覺化的核心價值：

- **發現模式**：趨勢、週期、異常值在圖表中一目了然
- **輔助決策**：讓非技術人員也能理解資料，參與決策
- **溝通效率**：一圖勝千言，減少資料解讀的歧義

::: tip 視覺化 ≠ 好看
視覺化的目標是**傳達資訊**，不是炫技。一個樸素但準確的長條圖，遠比一個花俏但難以理解的 3D 圖表更有價值。
:::

---

## 1. 圖表類型選擇：用對圖表講對故事

選擇圖表的第一步不是「我喜歡什麼圖表」，而是「我想傳達什麼資訊」。不同的資料目的對應不同的最佳圖表類型。

<ChartTypeSelectorDemo />

### 圖表選擇速查表

| 資料目的 | 推薦圖表 | 不推薦 | 原因 |
|---------|---------|--------|------|
| 比較大小 | 長條圖、橫條圖 | 圓餅圖 | 人眼對長度差異比角度差異更敏感 |
| 展示趨勢 | 折線圖、面積圖 | 長條圖 | 折線的連續性暗示時間的連續性 |
| 展示佔比 | 圓餅圖（≤5 類）、堆疊長條圖 | 3D 圓餅圖 | 3D 透視會扭曲面積比例 |
| 展示分佈 | 直方圖、盒鬚圖 | 折線圖 | 分佈需要看頻率，不是趨勢 |
| 展示關係 | 散佈圖、氣泡圖 | 長條圖 | 兩個連續變數的關係需要二維空間 |

::: tip 一個簡單的決策規則
- **一個變數** → 直方圖（分佈）或數字卡片（KPI）
- **兩個變數** → 折線圖（時間 vs 數值）或散佈圖（數值 vs 數值）
- **多個類別** → 長條圖（比較）或圓餅圖（佔比，≤5 類）
- **多維度** → 雷達圖或平行座標圖
:::

---

## 2. 視覺化設計原則：視覺化資訊編碼原則

好的視覺化不是「好看」，而是「好懂」。Edward Tufte 在《The Visual Display of Quantitative Information》中提出的幾個經典原則，至今仍是視覺化設計的重要參考。

| 原則 | 說明 | 反面案例 |
|------|------|---------|
| 資料墨水比 | 圖表中用於展示資料的「墨水」佔比應盡量高 | 過多的網格線、裝飾性元素 |
| 最小化非資料元素 | 去除不傳達資訊的視覺元素 | 3D 效果、陰影、漸層背景 |
| 一致的比例尺 | 座標軸從零開始，刻度均勻；若截斷座標軸必須明確標註 | Y 軸從 95 開始卻不說明 |
| 合理的顏色使用 | 用顏色編碼資訊，而非裝飾 | 彩虹色表示有序資料 |
| 清晰的標註 | 標題、軸標籤、圖例、單位缺一不可 | 沒有單位、沒有時間範圍 |

### 2.1 資料墨水比（Data-Ink Ratio）

> 圖表中用於表達資料的「墨水」佔總「墨水」的比例應該盡可能高。

簡單說：**刪掉一切不傳達資訊的元素**。

| 應該刪掉的 | 應該保留的 |
|-----------|-----------|
| 3D 效果、陰影、漸層 | 資料點、座標軸標籤 |
| 多餘的網格線 | 關鍵參考線（如目標值） |
| 裝飾性圖示 | 圖例（當有多系列時） |
| 花俏的背景色 | 清晰的標題和單位 |

### 2.2 一致性原則

- **顏色一致**：同一個維度在不同圖表中用同一種顏色，如「收入」始終用藍色
- **比例一致**：座標軸盡量從 0 開始，除非有充分理由並且明確標註
- **時間一致**：時間軸的間隔應該均勻，不要把不等距時間點畫成等距

### 2.3 可讀性原則

- **標題要說結論**：不是「月度銷售額」，而是「銷售額連續 3 個月下降」
- **標註關鍵點**：在異常值、轉折點處加標註，引導讀者注意力
- **控制資訊密度**：一張圖表傳達 1-2 個核心資訊，不要塞太多

::: tip 顏色使用的三條規則
1. **同一指標用同一顏色**：收入在所有圖表中都用藍色，不要一下藍一下綠
2. **有序資料用漸層色**：溫度從低到高用藍→紅漸層，不要用離散色
3. **考慮色盲友善**：約 8% 的男性有紅綠色盲，避免僅用紅綠區分關鍵資訊
:::

---

## 3. 儀表板佈局：不同場景，不同模式

儀表板（Dashboard）是多個圖表的有機組合。好的儀表板不是把圖表堆在一起，而是根據使用場景選擇合適的佈局模式。

<DashboardLayoutDemo />

### 四種常見佈局模式

| 佈局模式 | 核心結構 | 適用場景 | 設計要點 |
|---------|---------|---------|---------|
| 全局概覽型 | KPI 卡片 + 趨勢圖 + 明細表 | 管理層日報、營運大盤 | 核心指標放最上方，一眼看到關鍵數字 |
| 對比分析型 | 左右對稱佈局 | A/B 測試、同環比分析 | 保持對比維度一致，突出差異 |
| 下鑽分析型 | 從彙總到明細逐層展開 | 銷售分析、使用者行為分析 | 支援點擊互動，逐層深入 |
| 即時監控型 | 大數字 + 即時曲線 + 警報狀態 | 雙十一大螢幕、伺服器監控 | 自動重新整理，深色背景，適合投影 |

### 儀表板設計的 5 個原則

1. **先問「誰在看」**：CEO 看戰略指標，營運看過程指標，工程師看技術指標
2. **5 秒規則**：使用者應該在 5 秒內理解儀表板的核心資訊
3. **資訊層次**：最重要的放左上角，次要的放下方
4. **減少捲動**：一屏展示核心內容，避免使用者需要捲動才能看到關鍵資料
5. **留白**：不要塞滿每一寸空間，適當留白讓視覺更舒適

::: tip 儀表板 vs 報表
- **儀表板**：即時/準即時，互動式，面向監控和快速決策
- **報表**：定期產生（日/週/月），靜態，面向詳細分析和存檔

兩者不是替代關係，而是互補關係。儀表板發現問題，報表深入分析。
:::

---

## 4. 工具選型：從程式庫到 BI 平台

視覺化工具可以分為三個層次：程式級圖表庫、資料分析圖表庫、BI 平台。選擇哪個取決於需求複雜度、互動要求和團隊技術能力。

### 4.1 程式級圖表庫

| 工具 | 語言/平台 | 特點 | 適用場景 |
|------|----------|------|---------|
| ECharts | JavaScript | 開箱即用，圖表類型豐富，中文文件完善 | 業務系統內嵌圖表 |
| D3.js | JavaScript | 底層靈活，可自訂任何視覺化效果 | 高度客製化的資料視覺化 |
| Chart.js | JavaScript | 輕量簡單，上手快 | 簡單圖表需求 |
| Matplotlib | Python | 科學計算標準庫，靜態圖表 | 資料分析、論文圖表 |
| Plotly | Python/JS | 互動式圖表，支援 3D | 資料探索、Jupyter Notebook |

### 4.2 BI 平台（無程式碼/低程式碼）

| 工具 | 定位 | 核心優勢 | 適用團隊 |
|------|------|---------|---------|
| Grafana | 監控視覺化 | 時序資料支援好，警報整合 | 維運/SRE 團隊 |
| Metabase | 輕量 BI | 開源免費，SQL 即可出圖 | 中小團隊快速搭建 |
| Apache Superset | 企業 BI | 開源，支援大資料來源 | 有資料團隊的公司 |
| Tableau | 商業 BI | 拖曳式操作，視覺化效果好 | 業務分析師 |
| Power BI | 商業 BI | 與微軟生態整合好 | 使用微軟技術棧的企業 |

::: tip 選型建議
- **開發者做產品內嵌圖表** → ECharts（中文生態好）或 Chart.js（簡單場景）
- **資料分析師做探索分析** → Plotly + Jupyter 或 Metabase
- **維運監控大螢幕** → Grafana（事實標準）
- **業務團隊自助分析** → Metabase（開源）或 Tableau（商業）
- **需要高度客製化** → D3.js（學習曲線陡峭，但可塑性最強）
:::

---

## 5. 常見陷阱：這些圖表在騙你

資料視覺化是一把雙面刃：用得好能揭示真相，用得不好會製造錯覺。以下是最常見的視覺化陷阱，每個資料從業人員都應該能識別。

### 5.1 截斷座標軸

把 Y 軸的起點從 0 改成一個較大的數字，會讓微小的差異看起來像巨大的變化。

| 場景 | 真實差異 | 視覺感受 |
|------|---------|---------|
| Y 軸從 0 開始 | A 產品 98 分，B 產品 95 分 | 差距很小 |
| Y 軸從 90 開始 | 同樣的資料 | A 看起來是 B 的好幾倍 |

**什麼時候可以截斷？** 當資料的絕對值很大但變化很小時（如股價從 100 到 105），截斷是合理的，但必須明確標註。

### 5.2 3D 圓餅圖的透視陷阱

3D 透視會讓靠近觀察者的扇區看起來更大。一個 25% 的扇區在 3D 視角下可能看起來像 35%。

**解決方案**：永遠不要用 3D 圓餅圖。用普通圓餅圖或環形圖，或者乾脆用長條圖。

### 5.3 顏色濫用

| 錯誤做法 | 正確做法 |
|---------|---------|
| 用紅綠表示資料 | 用藍橙等色盲安全配色 |
| 每個類別用不同顏色 | 同一系列用同色系深淺變化 |
| 用顏色編碼連續資料但不加圖例 | 始終提供顏色圖例和數值標註 |
| 背景色和資料色對比度不夠 | 確保 WCAG AA 級對比度 |

### 5.4 其他常見錯誤

| 陷阱 | 問題 | 修復 |
|------|------|------|
| 雙 Y 軸 | 兩個不相關的指標共享 X 軸，暗示因果關係 | 拆成兩張圖，或明確說明無因果 |
| 面積誤導 | 用圓的半徑而非面積表示數值 | 數值翻倍時面積翻倍，不是半徑翻倍 |
| 時間軸不均勻 | 1 月、3 月、12 月的間距一樣 | 按實際時間比例排列 |
| 過多類別 | 圓餅圖有 15 個扇區 | 超過 5 個類別就用長條圖或合併「其他」 |

::: tip 視覺化的道德準則
視覺化的目的是**幫助理解**，不是**操縱認知**。每次做圖表時問自己：

- 如果我是讀者，這張圖會不會讓我產生錯誤的結論？
- 我是否隱藏了不利的資料？
- 座標軸、比例、顏色是否公正地呈現了資料？
:::

---

## 總結

資料視覺化是資料價值傳遞的「最後一哩」。再好的分析，如果不能被正確理解，就等於沒有分析。

回顧本章的關鍵要點：

1. **選對圖表**：根據資料目的（比較、趨勢、佔比、分佈、關係）選擇圖表類型
2. **設計原則**：高資料墨水比、一致性、可讀性是三大核心原則
3. **儀表板佈局**：概覽型、對比型、下鑽型、即時型四種模式覆蓋大部分場景
4. **工具選型**：從 ECharts 到 Grafana，根據團隊能力和需求複雜度選擇
5. **避免陷阱**：截斷座標軸、3D 圓餅圖、顏色濫用是最常見的誤導手段

## 延伸閱讀

- [The Visual Display of Quantitative Information](https://www.edwardtufte.com/tufte/books_vdqi) - Edward Tufte 的視覺化經典
- [ECharts 官方文件](https://echarts.apache.org/zh/index.html) - 最流行的中文圖表庫
- [D3.js](https://d3js.org/) - 強大的底層視覺化庫
- [Grafana](https://grafana.com/) - 監控視覺化事實標準
- [From Data to Viz](https://www.data-to-viz.com/) - 圖表類型選擇決策樹
- [ColorBrewer](https://colorbrewer2.org/) - 色盲安全的配色方案工具
