從 Chart 到 Chat - 基礎知識
要理解一張圖表,不應該只關注圖表的外觀或使用哪一種 Chart Type,而是需要從圖表的基本組成、規格定義及資料視覺化的設計面向進行思考。

摘要
要理解一張圖表,不應該只關注圖表的外觀或使用哪一種 Chart Type,而是需要從圖表的基本組成、規格定義及資料視覺化的設計面向進行思考。
本文將從三個方向整理:
- 基本資訊(Chart Anatomy):了解一張圖表包含哪些基本元素。
- 圖表規格(Chart Specification):理解圖表的資料、視覺映射及相關設定如何組織。
- 五層面向思考:從 Data Structure、Transformation、Visual Encoding、Statistical Layer、Interaction 分析圖表的設計與擴充能力。
基本資訊
| 資訊 | 用途 | 是否必要 |
|---|---|---|
| Title | 一般放置卡片頂部,告訴使用者這張圖是在看什麼,部分會包含副標題直接點出結論 | 建議 |
| X Axis | 水平座標軸,負責呈現映射到 X Position 的資料。依圖表類型,可對應維度(Dimension) 或量值/指標(Measure/Metric),例如月份、產品類別、身高。 | 視圖表 |
| Y Axis | 垂直座標軸,負責呈現映射到 Y Position 的資料。依圖表類型,可對應維度(Dimension) 或量值/指標(Measure/Metric),例如營收、人口、體重。 | 視圖表 |
| Axis Label | 說明 X Axis、Y Axis 分別是什麼 | 建議 |
| Unit | 一般放置左上角,說明整張圖的單位。例如:元、%、人、秒 | 有單位時必要 |
| Domain | X、Y Axis 各自對應的資料定義域。例如 X Axis 為 ['1月', '2月', '3月'],由 Dimension 取得;Y Axis 為 [0, 1000],可根據 Measure 的數值範圍自動計算,或手動設定。 | 必要 |
| Range | 實際可繪製範圍,X/Y分別是500 pixel,X 會是[0, 500],Y會是[500, 0]。Y 軸反向是因為畫面座標通常由上往下增加。然而,圖表包含 Title、Legend、X Label 等相關資訊,圖表總高不會是實際可繪製高度 | 必要 |
| Scale | 將 Domain 中的資料值轉換為 Range 中視覺位置的映射規則。例如 Linear、Log、Power、Band、Point、Time 等。不同資料型態與視覺化需求會使用不同的 Scale。 | 必要 |
| Legend | 圖例(Legend)用來說明圖表中的顏色、形狀、大小等視覺屬性所代表的資料意義。資料系列(Series)則是一組相關的資料,圖表可以包含一個或多個 Series。 | 多系列時必要 |
| Data Mark | 數據標記是圖表主體最核心、表達數據大小的那圖形本身。例如:長條圖的每個 bar、折線圖的每個圓節點 | 必要 |
| Tooltip | 提示框是在 Hover 時提供精確與額外資訊 | 互動圖表建議 |
| Data Source | 說明該筆資料來源 | 分析/報表圖表建議 |
| Time Range | 資料涵蓋的區間 | 時間資料很重要 |
圖表規格
圖表規格(Chart Specification)用來描述一張圖表所需要的資料、視覺映射、比例尺、資料處理及互動行為。以下結構是為了方便理解圖表組成所整理的概念性分類,並非所有圖表函式庫都採用完全相同的規格。
Chart Specification
│
├── Context
│ ├── Title
│ ├── Description
│ ├── Data Source
│ └── Time Range
│
├── Data
│ ├── Dimension
│ ├── Measure
│ ├── Series
│ └── Category
│
├── Encoding
│ ├── X
│ ├── Y
│ ├── Color
│ ├── Size
│ └── Shape
│
├── Scale
│ ├── Domain
│ ├── Range
│ ├── Scale Type
│ └── Tick
│
├── Transformation
│ ├── Filter
│ ├── Sort
│ ├── Group
│ ├── Aggregate
│ └── Bin
│
└── Interaction
├── Tooltip
├── Zoom
├── Brush
├── Select
└── Drill Down
五層面向思考
分析圖表的能力時,可以從 Data Structure、Transformation、Visual Encoding、Statistical Layer、Interaction 五個面向進行思考。
其中 Data Structure 與 Visual Encoding 是理解資料如何被視覺化的核心;Transformation 則依據資料是否需要轉換、整理或聚合而決定。
Statistical Layer 與 Interaction 不一定是每張圖表都需要的,但部分圖表本身依賴統計計算,例如 Box Plot;互動功能則根據使用情境決定。
這五個面向並非固定的執行順序,而是協助分析圖表設計與進階能力的思考框架。
Data Structure
資料結構(Data Structure)它描述的是資料本身的結構與語意。例如以下資料有哪些欄位?分別又是對應到什麼角色?
| 月份 | 產品 | 營收 |
|---|---|---|
| 1月 | A | 100 |
| 1月 | B | 200 |
| 2月 | A | 150 |
| 2月 | B | 240 |
- Dimension:月份、產品
- Measure:營收
Transformation
資料轉換(Data Transformation)則在說明資料要如何處理,因為原始資料(Raw Data)不一定能直接畫在圖表上,則需透過 Transformation 進行處理。
在上述中已經把 Dimension、Measure 分類出來,那又可以如何顯示在圖表上?
例如看每個月總營收:
原始資料
↓
Group By 月份
↓
SUM(營收)
↓
得到
1月 → 300
2月 → 390
而 Transformation 可操作範圍還有以下:
| Transformation | 說明 | 範例 |
|---|---|---|
| Filter | 過濾資料 | 只保留 2026 年資料 |
| Sort | 重新排序資料 | 依營收由高到低 |
| Group | 將資料分組 | 按月份分組 |
| Aggregate | 聚合計算 | SUM、AVG、COUNT |
| Bin | 將連續數值分成區間 | 年齡分成 20–29、30–39 |
| Calculate | 計算衍生欄位 | Revenue − Cost = Profit |
| Normalize | 將資料轉換成特定基準 | 比例、百分比、標準化數值 |
Visual Encoding
視覺編碼(Visual Encoding)這層非常重要,是將資料映射成視覺屬性的過程,讓使用者能透過圖形理解資料。按照第一層資料結構分類出的月份及營收就可作為圖表上 X Position 及 Y Position。
Visual Encoding 又包含以下視覺屬性
| 視覺屬性 | 說明 | 範例 |
|---|---|---|
| Position | 位置 | 月份對應 X 軸、營收對應 Y 軸 |
| Length | 長度 | 長條圖的長度代表營收 |
| Color | 顏色 | 不同產品使用不同顏色 |
| Size | 大小 | 銷售量越大,圓點越大 |
| Shape | 形狀 | 不同類別使用不同符號 |
| Opacity | 透明度 | 數值越高,透明度越低 |
| Area | 面積 | 樹圖的矩形面積代表數值 |
Statistical Layer
統計分析層(Statistical Layer) 上述有說到是其一非必要的,這一層面向說明的是要不要從資料中推導出額外資訊,會透過統計方法,從資料中計算、歸納或推導出更有分析價值的資訊,並將結果呈現在圖表中,如從 Raw Data 中推出的 Dimension 及 Measure 只可畫出基礎的 Bar Chart,但需要更詳細的 Moving Average、Growth Rate 等資訊,就關於該層的操作。
可將統計分析分成五個方向:
| 分析方向 | 用途 | 常見統計方法 |
|---|---|---|
| 集中趨勢(Central Tendency) | 了解數據的典型位置 | Mean、Median、Mode |
| 資料分布(Distribution) | 了解資料的分散與分布特性 | Variance、Std Dev、Quartile、IQR |
| 趨勢分析(Trend) | 了解數值如何隨時間變化 | Moving Average、Trend Line |
| 關聯分析(Relationship) | 了解變數之間的關係 | Correlation、Regression |
| 不確定性(Uncertainty) | 表示估計結果的精確程度與不確定性 | Confidence Interval、Standard Error |
不同圖表對 Statistical Layer 的需求
| Chart Type | Statistical Layer |
|---|---|
| Bar Chart | 可選:平均線、標準差、誤差線 |
| Line Chart | 可選:移動平均、趨勢線、信賴區間 |
| Scatter Plot | 可選:相關係數、迴歸線 |
| Histogram | 核心是分箱與頻數;可加入分布統計 |
| Box Plot | 核心需求:Median、Q1、Q3、Whiskers、Outliers |
Interaction
互動層(Interaction)顧名思義就是使用者如何與圖表進行互動,透過操作來探索、篩選、比較或深入分析資料,像是 Tooltip、Hide Series、Click Bar 等操作。更簡單來說讓使用者不只是觀看圖表,而是能主動探索資料、取得更多資訊。
Interaction 也可分成五個面向
| 互動類型 | 用途 | 常見功能 |
|---|---|---|
| 資訊檢視(Inspect) | 查看資料的詳細資訊 | Tooltip、Hover |
| 資料選取(Select) | 選擇特定資料或區域 | Click、Brush、Highlight |
| 資料篩選(Filter) | 控制要顯示哪些資料 | Legend Filter、Data Filter |
| 視圖導覽(Navigate) | 改變目前觀察的範圍 | Zoom、Pan |
| 深入探索(Explore) | 查看更細節或不同層級的資料 | Drill Down、Drill Through、Cross-filter |
與其他面向的關係
Interaction 不一定只影響圖表的外觀,也可能改變資料處理方式。
使用者操作(Interaction)
│
├── Hover
│ └── 顯示 Tooltip
│
├── Select
│ └── Highlight(Visual Encoding)
│
├── Filter
│ └── 重新篩選資料(Transformation)
│
└── Drill Down
└── 取得或轉換更細層級資料
└── 更新 Visual Encoding
因此 Interaction 可以觸發 Transformation、Visual Encoding,甚至更新 Statistical Layer 的結果。
例如在 Line Chart 中,使用者篩選某個時間區間後,平均值、趨勢線可能需要依照新的資料範圍重新計算。這說明了 Interaction 與 Statistical Layer 之間的緊密關聯,使用者的操作會直接影響統計分析的結果,進而改變圖表的呈現。