National Central University
Uedu Main Site
Explore Uedu
Student Console
Register as Member/Login
Research Informed Consent Center
Survey Center
Educational Big Data Challenge
Claim or create a course
Try an AI Scenario Task
Support & Messages
Uptime Data

UeduGPTs

--

Jupyters

3

Local AI

--

Uedu Code

--

中央大學 AQI 80 24°C PM2.5 21
AI Reply Desktop Notifications

Show a desktop notification when the AI TA finishes replying

Chat Message Notifications

Notify me when classmates post messages in the forum

Sound notification

Play an alert sound whenever there is a new notification

Unit 14

不誤導的圖

截斷的軸、雙軸、面積錯覺;標題、註記、顏色與小倍數
Interaction實作 30 minute(s)

Learning Objectives

  • 說出截斷的 y 軸、雙軸、面積與立體效果、不等距的軸各自怎麼誤導讀者,並修正它們
  • 算出圖上看起來的倍數與實際倍數,用謊言因子判斷一張圖忠不忠實
  • 用說出結論的標題、註記、資料來源說明,讓讀者一眼看懂重點
  • 用小倍數(small multiples)比較好幾組資料,並用顏色只強調重要的部分

畫得出來的圖,不一定是誠實的圖

上一課學會了怎麼畫圖、怎麼選圖。這一課看另一面:資料完全正確,圖還是可能讓人得到錯的印象。 大多數誤導的圖不是故意造假,而是用了軟體的預設值、想讓差異「明顯一點」,或者想把兩件事放在同一張圖裡。

讀者看圖時,用的是長度、面積、斜率、位置這些視覺線索。只要這些線索和數字不成比例,圖就會說出資料沒有說的事。 這一課的資料是 dorm_power.csv(五棟宿舍每天的用電)與 weather.csv,都是程式產生的模擬資料,不是任何學校的真實資料。

逐步看:同一份資料,y 軸從 500 與從 0 開始

左右兩張圖的資料完全相同,只差 y 軸從哪裡開始。看完圖再比較第 7 行印出的實際倍數。

謊言因子:圖上的差距 ÷ 資料的差距

Edward Tufte 在《The Visual Display of Quantitative Information》(1983)提出謊言因子(lie factor):

謊言因子 = 圖上顯示的變化幅度 ÷ 資料實際的變化幅度

變化幅度用「增加了幾成」計算。上面的例子:

D 棟 C 棟 變化幅度
資料 517.2 1323.1 1323.1 ÷ 517.2 − 1 ≈ 1.56(多 156%)
左圖的長條高度(扣掉 500) 17.2 823.1 823.1 ÷ 17.2 − 1 ≈ 46.9(多 4690%)

謊言因子約 46.9 ÷ 1.56 ≈ 30:圖上的差距被放大了大約 30 倍。接近 1 才是忠實的圖。

什麼時候 y 軸可以不從 0 開始? 長條圖用「長度」表示數量,一定要從 0 開始。折線圖看的是變化(例如體溫從 36.5 升到 38.5), 從 0 開始反而把重要的變化壓成一條平線,這時可以不從 0 開始,但軸的刻度要清楚標出來。

另外三種常見的誤導

陷阱 發生什麼事 修正
雙軸 兩個不同單位的變數各用一個 y 軸。兩個軸的範圍都由作者決定,所以線的斜率、高低、交叉點都可以隨意調整 分成上下兩張圖;或把兩者都換成「相對於起點的百分比」放在同一個軸
面積與立體 用圖示表示數量時,若邊長和數值成正比,面積就變成數值的平方;立體效果再加上體積與透視,更難讀 用長條圖;一定要用圖示時,讓面積和數值成正比;不用 3D 效果
不等距的軸 時間點的間隔不一樣(例如前幾筆每週一次、最後一筆隔三個月),卻畫得一樣寬,變化看起來突然變快或變慢 x 軸依實際時間排列,或在圖上標明間隔不同

下面的小工具讓你親手調整這些設定,看「圖的印象」和「實際數字」怎麼分開。

互動練習:把四張會誤導的圖修好

上方的四個分頁是四種陷阱。每一頁的數字都是程式依資料算的:實際倍數和圖上看起來的倍數分開列出。 完成下方的五個任務(順序不拘)。資料由 dorm_power.csv、weather.csv 算出(模擬資料)。

讓圖說清楚:標題、註記、顏色、小倍數

不誤導只是基本,好的圖還要讓讀者一眼看到重點:

  • 標題說出結論:「各棟每日用電」只說了畫什麼;「C 棟每日用電最多,約是 D 棟的 2.6 倍」直接告訴讀者要看什麼。結論要有資料支持,不要寫資料沒有證明的因果。
  • 註記:用 ax.annotate 加箭頭與文字、用 ax.axvspan 標出一段期間(例如考試週),讀者不必自己找。
  • 註明資料來源與限制:例如「資料:程式產生的模擬資料」,用 fig.text 寫在角落。
  • 顏色只用來強調:大部分用灰色,要讀者注意的那一條用品牌色,不要每條線都用不同的鮮豔顏色。
  • 小倍數(small multiples):要比較好幾組時,不要把五條線疊成一團,改成每組一張小圖、共用同一個 y 軸(sharey=True),並排放在一起。

逐步看:五棟宿舍的小倍數圖

每一棟一張小圖,藍線是這一棟,灰線是其他四棟當背景。注意 sharey=True:五張圖的 y 軸相同,高低才能直接比。

逐步看:說出結論的標題與註記

這張圖用標題說出重點,用色塊和箭頭標出期中考週,並在角落註明資料來源。

實作:算出截斷軸的謊言因子

讀入 dorm_power.csv,依棟別(building)算出每日平均用電(kwh),四捨五入到小數 1 位。 假設長條圖的 y 軸從 500 開始,計算 C 棟與 D 棟的:

  1. 實際倍數:C ÷ D
  2. 看起來的倍數:(C − 500) ÷ (D − 500)
  3. 謊言因子:(看起來的倍數 − 1) ÷ (實際倍數 − 1)

三個數都四捨五入到小數 1 位,依下面的格式印出:

實際倍數: 2.6
看起來的倍數: …
謊言因子: …
你的輸出
預期輸出

小測驗:誤導的圖

1.

下面程式會印出什麼?(A、B 兩組的數值,畫成 y 軸從 45 開始的長條圖)

a, b, base = 50, 60, 45
print(round((b - base) / (a - base), 1), round(b / a, 1))
2.

一張資訊圖用正方形圖示表示人數,B 校人數是 A 校的 2 倍,設計者把 B 的正方形邊長畫成 A 的 2 倍。讀者看到的面積是幾倍?

3.

雙軸圖上,左軸的氣溫線和右軸的用電線在 11 月交叉。這個交叉點代表什麼?

第 1 次作答

小測驗:把圖說清楚

1.

下列哪一種情況,y 軸可以不從 0 開始?

2.

用小倍數比較五棟宿舍的用電時,為什麼通常要設定 sharey=True?

3.

下列哪一個標題最能幫讀者看到重點,又沒有超出資料能支持的範圍?

第 1 次作答

重點整理

  • 截斷的 y 軸會誇大差異;長條圖的 y 軸一定從 0 開始。折線圖看變化時可以不從 0 開始,但刻度要清楚。
  • 謊言因子=圖上顯示的變化幅度 ÷ 資料實際的變化幅度,接近 1 才忠實。
  • 雙軸的線形、高低和交叉點都由作者選的範圍決定;改成上下兩張圖,或換成同一個尺度。
  • 面積與立體:邊長和數值成正比時面積會變成平方;用長條圖,不用 3D 效果。
  • 不等距的軸:時間間隔不同時,x 軸要依實際時間。
  • 讓圖說清楚:標題說出有資料支持的結論、用 annotate/axvspan 註記、寫上資料來源、顏色只用來強調、多組比較用共用 y 軸的小倍數。
  • 下一課開始統計:用平均數、中位數、標準差、四分位數描述一組資料,並看極端值怎麼影響它們。
這一課完成了!
Next lesson:敘述統計
你目前沒有登入,學習進度只存在這個瀏覽器。 Login 後,進度會跟著帳號,換電腦也看得到。