M08.04|資料視覺化:一張好圖勝過一千個數字
長條圖、折線圖、散布圖 — 選錯圖表比沒有圖表更危險
本講學習重點
長條圖(Bar Chart):比較類別間的數值;直條(垂直)比較大小,橫條適合長標籤
折線圖(Line Chart):展示時間序列趨勢,適合連續數值資料,不適合無順序的類別
散布圖(Scatter Plot):探索兩個數值變數的關係,是識別相關性和聚類的利器
直方圖(Histogram):展示單一數值變數的分佈形狀,x 軸是數值區間(連續),不是類別
圓餅圖(Pie Chart):展示各部分佔整體的比例,超過 5-6 個類別就難以閱讀,應改用長條圖
熱力圖(Heatmap):展示矩陣資料或相關係數矩陣,顏色代表數值強度
視覺謊言:截斷 Y 軸、面積誤用、顏色誤導、3D 圖表扭曲比例
資料墨水比(Edward Tufte):每滴墨水都應代表資料,去除所有裝飾性元素
🎙️ Podcast(中文)
一句話搞懂
資料視覺化是把數字翻譯成人腦能直覺理解的視覺語言——選對了圖表類型,一眼就能看出趨勢、異常、和關係;選錯了圖表(或刻意操弄比例和 Y 軸),同一份資料可以傳達出完全相反的故事,這也是為什麼「選錯圖表比沒有圖表更危險」。
白話解說
為什麼人腦需要視覺化
人類大腦的視覺皮層(Visual Cortex)佔整個皮質面積的約 30%,而負責數字運算的頂葉區域佔比則小得多。這個進化的結果意味著:我們的大腦天生就更擅長處理視覺資訊,而不是一列列的數字。當你看到一個快速上升的折線圖,大腦幾乎立刻就感受到「增長」的趨勢;但如果你給同一個人看三十個數字組成的表格,要他在五秒內說出趨勢,幾乎不可能做到。
這個生理事實讓資料視覺化在 AI 時代變得尤為重要。現代 AI 系統處理的資料集動輒有數百個特徵、數百萬個樣本,純粹靠看數字根本不可能理解資料的整體結構。探索式資料分析(Exploratory Data Analysis, EDA)的核心任務之一,就是用視覺化工具快速掌握資料的分佈、關係、和異常。在模型建立之後,視覺化同樣不可或缺:特徵重要性圖、混淆矩陣(Confusion Matrix)的熱力圖、殘差圖(Residual Plot)——這些都是評估和解釋 AI 模型的標準視覺工具。
五種基本圖表和它們的適用時機
長條圖(Bar Chart)是最基礎也最常用的圖表,適合用來比較不同類別之間的數值大小。直條圖(垂直長條)是最自然的閱讀方式;當類別名稱很長時(如各縣市名稱),改用橫條圖可以避免文字重疊。長條圖最重要的一個規則:Y 軸必須從零開始。如果從非零值開始,相對差異會被視覺放大,讓本來很小的差距看起來像天壤之別——這是最常見的視覺謊言手法之一。堆疊長條圖(Stacked Bar Chart)可以同時展示總量和各部分的組成,但當組成部分超過四五個時,中間層次的比較會變得困難,此時改用分組長條圖(Grouped Bar Chart)或獨立的圖表組合更清晰。
折線圖(Line Chart)適合展示隨時間或排序變數連續變化的趨勢。折線圖中的「線」暗示了相鄰資料點之間有連續的過渡關係,因此只有在 X 軸代表有意義連續順序(時間、溫度梯度、年齡段等)時,才應該用折線圖。如果 X 軸是沒有自然順序的類別(如不同城市、不同產品),把各個城市的銷售量用折線連起來,那條線毫無意義,應該改用長條圖。多條折線在同一張圖上比較不同組別的趨勢是很強大的工具,但超過五條線時,圖表會變得雜亂難讀,應考慮使用小倍數圖(Small Multiples)——把每條線分開在獨立的小格子裡,保持一致的比例尺以便比較。
散布圖(Scatter Plot)用來探索兩個數值變數之間的關係,每個資料點代表一個觀測值(如一位員工),X 和 Y 座標分別是兩個變數的數值(如工作年資和年薪)。散布圖能視覺化地展示相關方向(正/負)、相關強度(點的集中程度)、以及非線性關係(點的分佈形狀是直線、曲線、還是完全隨機分散)。在機器學習中,散布圖是識別資料聚類(Clustering)、偵測離群值、以及驗證線性假設的基本工具。當資料點非常多(幾萬到幾十萬筆)時,直接畫散布圖會造成嚴重的重疊(Overplotting),常見解法是降低透明度(alpha 值)、使用六邊形格(Hexbin)密度圖、或只取隨機樣本繪製。
直方圖(Histogram)用來展示單一數值變數的分佈形狀,X 軸是數值的連續區間(Bin),Y 軸是該區間內的資料點數量。直方圖和長條圖看起來相似,但有本質區別:長條圖的 X 軸是類別(之間有間距),直方圖的 X 軸是連續數值(條形緊貼在一起)。透過直方圖可以快速看出:分佈是否對稱(還是左偏/右偏)、是否有多個峰值(多峰分佈通常暗示資料中有子群體)、離群值在什麼範圍。選擇 Bin 的數量(Bin Width)是直方圖的一個關鍵決策:Bin 太少,細節消失變成粗糙的形狀;Bin 太多,每個條形都變成幾個資料點,顯得破碎而看不出整體形狀。實踐中常用 Sturges 法則(Bin 數 ≈ 1 + log₂(n))作為起點,然後調整直到分佈形狀清晰。
視覺謊言:當圖表說謊
好的視覺化讓數據說話,但圖表也是強大的說服工具,可以被刻意或無意地操弄,傳達誤導性的訊息。
截斷 Y 軸(Truncated Y-Axis)是最常見的視覺謊言:不讓 Y 軸從零開始,而是從一個接近數據最小值的位置開始,讓本來相對微小的差異看起來像是巨大的鴻溝。例如,兩個政黨的支持率分別是 50.1% 和 49.9%,差距只有 0.2 個百分點;但如果 Y 軸從 49% 開始到 51%,視覺上看起來 50.1% 的那條柱子是 49.9% 的兩倍高,傳達完全失真的差異感。識別方法:看圖表時先確認 Y 軸起始點是否為零(或是否有明確標示截斷),若非零且沒有充分理由(如科學測量中確實不需要從零看),就要警惕。
誤用面積(Area Misrepresentation):在泡泡圖(Bubble Chart)中,每個泡泡的大小代表一個數值,但如果設計者用「直徑」而非「面積」對應數值,面積的增長會是直徑的平方倍,嚴重誇大大值和小值的視覺差異。同樣的問題出現在 3D 長條圖:立體條的「體積」感讓靠近觀看者的條形看起來更大,遠處的更小,空間透視效應完全扭曲了比較的準確性。Edward Tufte 把這種現象稱為「謊言因子(Lie Factor)」:圖表中視覺上呈現的效果大小,除以資料中實際的效果大小;好的圖表謊言因子應接近 1。
選擇性時間窗口(Cherry-Picking Time Range):一條本來長期向下的趨勢線,如果只截取其中一個短暫上升的時間段,折線圖就會讓人以為是上升趨勢。在媒體報導中,這是最常見的統計操弄方式之一。識別方法:查看折線圖的時間範圍,思考時間段的選擇是否合理,盡量查閱更長期的趨勢數據。
選圖原則和工具生態
選擇圖表類型可以用一個簡單的決策框架:你想傳達的是比較(Comparison)、分佈(Distribution)、關係(Relationship)、還是組成(Composition)?比較用長條圖;分佈用直方圖或箱形圖;關係用散布圖;組成用圓餅圖(類別少時)或堆疊長條圖(類別多時)。時間趨勢是跨越這些類型的特殊維度,通常最適合折線圖。
現代的資料視覺化工具生態系非常豐富:Python 的 Matplotlib 是最基礎的繪圖庫,控制力強但需要較多代碼;Seaborn 封裝了常用統計圖表,預設樣式好看;Plotly 提供互動式圖表,適合嵌入網頁;Tableau 和 Power BI 是商業智能(BI)領域的主流工具,拖拉介面無需寫程式,適合業務人員。在 AI/ML 工作流中,Jupyter Notebook 結合 matplotlib/seaborn 是 EDA 的標配,而 Streamlit 讓資料科學家能快速把分析結果包裝成互動式 web app 分享給非技術的業務團隊。
應用場景
| 視覺化類型 | 最適合的問題 | 常見錯誤用法 | 替代方案 |
|---|---|---|---|
| 長條圖 | 比較各類別/地區/產品的銷售量 | Y 軸不從零開始;超過 15 個類別難以閱讀 | 超多類別改用排序後的橫條圖或分面小圖 |
| 折線圖 | 電商月銷售額的 12 個月趨勢 | 用折線連接沒有時間順序的類別(如不同城市) | 無序類別改用長條圖 |
| 散布圖 | 探索廣告花費和銷售額的關係 | 數據點太多造成嚴重重疊(Overplotting) | 加入透明度或使用 Hexbin 密度圖 |
| 直方圖 | 呈現用戶年齡的分佈 | 把有意義的類別(星期幾)誤用直方圖(應用長條圖) | 用 KDE(核密度估計)曲線呈現更平滑的分佈 |
| 圓餅圖 | 三個主要收入來源的佔比(各 33%) | 超過 6 個切片,各部分都很小難以比較 | 超多類別改用長條圖;組合小類別為「其他」 |
| 熱力圖 | 相關係數矩陣(特徵間相關性) | 顏色比例不對稱,0 不在中間,誤導冷暖感 | 確保雙色色階(Diverging Colormap)的 0 在中心 |
| 箱形圖 | 各部門薪資分佈的比較(中位數+四分位距) | 只展示箱形圖但不說明如何解讀,不熟悉的讀者看不懂 | 搭配點圖(Strip Plot)顯示原始數據點 |
常見誤區
誤區 1:「越多資訊的圖表越好,視覺效果越豐富越專業」
這個誤解催生了無數糟糕的「儀表板(Dashboard)」:螢幕上塞滿了 20 個圖表,每個圖表裡又有不同顏色、漸層背景、3D 效果、動畫——看完之後大腦一片混亂,反而什麼也記不住。Edward Tufte 的資料墨水比(Data-Ink Ratio)原則說:「一張圖表上的每一滴墨水(或每個像素),都應該代表有意義的資料資訊;去掉任何不傳遞資訊的裝飾性元素。」這意味著:刪掉圖表的背景網格線(或改成非常淡的輔助線)、去掉外框、去掉不必要的圖例(如果只有一條折線就不需要圖例)、使用樸素的配色(不要為了好看而用多種顏色,顏色應代表資料維度,不是裝飾)。「少即是多」在資料視覺化中是鐵律——清晰地傳達一個重要的洞見,比讓觀者自己從一堆圖表中尋找意義強得多。
誤區 2:「用圓餅圖呈現任何比例資料都很直覺」
圓餅圖(Pie Chart)有一個致命的弱點:人類視覺系統非常不擅長比較角度(和弧長)的大小,但對長度的比較卻十分精準。當圓餅圖的兩個切片大小接近時(如 32% vs 35% vs 33%),幾乎沒有人能準確地從圓餅圖中看出差異,但換成等高的長條圖,差異一目了然。圓餅圖的適用情境非常窄:只有當類別數量不超過 4-5 個、且各類別之間有明顯的大小差異(如一個類別佔 70%,其餘各佔 10%)時,圓餅圖才能有效傳達「佔比感」。超過 5 個類別、或各類別接近均等分布時,圓餅圖不如長條圖,更不如附帶百分比標籤的長條圖。大多數資料視覺化的最佳實踐指南,包括 Tableau 的官方建議,都建議謹慎使用圓餅圖。
誤區 3:「把所有人的資料平均化後畫成折線圖,就能代表用戶行為」
這個誤區的根本問題是平均的問題掩蓋了多樣性,已在描述性統計中討論過,但在視覺化中有一個特別的表現形式。假設你分析用戶在 App 的 30 天留存曲線:平均留存率從第 1 天的 100% 下降到第 30 天的 20%,畫成平滑的折線圖。但如果你進一步把用戶按行為分組視覺化(如用聚類分析找出子族群),你可能會發現:有 70% 的用戶在第 3 天就完全流失(留存率快速跌到 0),有 30% 的核心用戶在 30 天後仍有 67% 的留存率——這兩個截然不同的族群,平均起來正好形成你看到的「平滑曲線」,但這條曲線不代表任何真實用戶的體驗。解法:在視覺化時,對關鍵業務指標,除了總體平均曲線,也加上分組的子族群曲線(分面圖)或信賴區間(Confidence Interval)帶狀區域,讓讀者能感知到平均背後的多樣性。
小練習
練習 1:識別圖表問題並選擇正確類型
以下描述了四種圖表的使用方式,請指出每種的問題,並建議更合適的替代方案:
圖表 A:行銷報告中,用圓餅圖展示七個廣告渠道(FB 廣告 15%、Google 廣告 18%、IG 廣告 14%、LINE 廣告 12%、KOL 合作 16%、SEO 13%、其他 12%)的預算分配比例。
圖表 B:產品分析師用折線圖展示「台北、台中、台南、高雄、花蓮」五個城市 2025 年的年度銷售額,把五個點用線連起來,描述說「從台北到花蓮,銷售額呈現下降趨勢」。
圖表 C:HR 部門用直方圖展示「員工所在部門」(業務部 120 人、工程部 85 人、行銷部 45 人、財務部 30 人、人資部 25 人)的人數分佈。
圖表 D:一家公司股價從 100 元漲到 103 元,財務長用 Y 軸從 99 元開始的折線圖展示給投資人,折線看起來在圖表中上升了圖表高度的 75%。
查看答案
**圖表 A:圓餅圖展示 7 個廣告渠道** 問題:七個渠道的比例非常接近(12%–18% 之間,最大差距只有 6 個百分點),人眼無法從圓餅圖的角度差異中辨識哪個渠道更大,且 7 個切片已經超過圓餅圖的易讀上限(建議最多 5 個)。 建議替代方案:**水平長條圖(Horizontal Bar Chart)**,按比例從大到小排序,每個長條旁直接標註百分比數值。長條的長度比圓餅的角度更容易精確比較,7 個類別也不會造成閱讀困難。 **圖表 B:折線圖連接五個城市的銷售額** 問題:五個城市之間沒有自然的連續順序——台北到台中不是「連續的」,就像 1 月到 2 月是連續的。折線暗示的「從台北到花蓮銷售額下降」的描述,實際上只是因為選擇了一個特定的城市排列順序,把高值城市排在前面、低值排在後面,然後畫了一條下降線,這是對折線圖的誤用,也帶有引導性誤導。 建議替代方案:**長條圖(Bar Chart)**,按銷售額高低排序,不要把城市用線連起來,讓讀者自行比較各城市的差異,而不是被折線引導產生「地理梯度」的錯誤印象。 **圖表 C:用直方圖展示部門人數** 問題:「員工所在部門」是類別資料(無序的類別,業務部和工程部之間沒有連續關係),直方圖用於展示連續數值變數的分佈區間,此處使用直方圖是根本的圖表類型錯誤(雖然看起來很像,但意義完全不同)。直方圖的 X 軸應該是連續數值,各條形緊貼在一起代表連續區間;此處各部門之間應有間距,表示它們是獨立的類別。 建議替代方案:**長條圖(Bar Chart)**,各條形之間保留間距,清楚表示這是類別比較,而非連續分佈。 **圖表 D:Y 軸從 99 元開始的股價折線圖** 問題:股價從 100 元漲到 103 元,實際漲幅為 3%;但 Y 軸從 99 元到 103 元,折線從圖表底部 25% 的位置上升到 100%,視覺上看起來上漲了圖表高度的 75%,謊言因子(Lie Factor)= 視覺效果(75%)/ 實際效果(3%)≈ 25,嚴重失真。 修正方式:Y 軸從 0 開始(對股價圖而言,漲幅 3% 會顯示為幾乎看不見的變化,這才是真實比例);或若確實需要放大短期價格波動(如技術分析),應明確在圖表標題或說明中標注「Y 軸截斷,僅顯示 99–103 元區間」,讓讀者清楚知道這不是從零開始的比例,以避免誤導。練習 2:設計 AI 模型結果的視覺化報告
一家醫療 AI 新創公司開發了一個「糖尿病風險預測模型」,在測試集上得到以下結果:
- 測試集:5,000 筆病歷,其中高風險 800 筆(實際糖尿病患者),低風險 4,200 筆(正常人)
- 模型預測:600 筆預測為高風險(其中 480 筆實際是高風險,120 筆是正常人被誤判)
- 500 筆未被預測為高風險者中有 320 筆實際是高風險患者(漏判)
請設計一個向非技術的醫院主任說明模型效果的視覺化方案,包括:
- 用什麼視覺化工具呈現混淆矩陣(Confusion Matrix)的四個數字?
- 如果你要畫一張「模型在不同年齡層的表現差異」折線圖,X 軸應該怎麼設計?
- 如何用視覺化說明「偽陰性(高風險患者被漏判)的醫療代價遠高於偽陽性(正常人被誤判)」這個核心問題?