← ทำไมตาถึงอ่านกราฟนี้ได้เร็วกว่า
LEVEL 2 · ระดับกลาง
แกนโกหกได้
บทที่ 6 ทิ้งอำนาจข้อหนึ่งไว้ให้คุณโดยยังไม่ตัดสิน — คนทำกราฟเป็นคนเลือกค่าฐานที่ตาจะเอาไปหาร บทนี้คือบทที่เราเอาอำนาจนั้นมาวัดเป็นตัวเลข แล้วขีดเส้นว่าตรงไหนคือการเน้น ตรงไหนคือการหลอก
9.1 วัดคำโกหกเป็นตัวเลข
💡 ตัวคูณคำโกหก (lie factor) — ขนาดของผลที่ ภาพ แสดง หารด้วยขนาดของผลที่ ข้อมูล มีจริง · แนวคิดของ Edward Tufte · ถ้าเท่ากับ 1 แปลว่าภาพซื่อสัตย์ตามสัดส่วน ยิ่งห่างจาก 1 ภาพยิ่งบิดเบี้ยว
ข้อมูลชุดเดียวกันทั้งสามแผง 102 กับ 100 ต่างกัน 2% เท่าเดิมตลอด แต่ตัวคูณวิ่งจาก 1.00 ไป 100.00
"""ตัวคูณคำโกหก — ขนาดของผลที่ภาพแสดง หารด้วยขนาดของผลที่มีจริงในข้อมูล"""
def lie_factor(a, b, floor):
"""a, b = ค่าจริงสองค่า · floor = จุดที่แกนเริ่มนับ"""
real = abs(a - b) / min(a, b) # ผลจริง คิดเป็นสัดส่วน
ha, hb = a - floor, b - floor
shown = abs(ha - hb) / min(ha, hb) # ผลที่ตาเห็นจากความยาวแท่ง
return real, shown, shown / real
print(f"{'ฐานแกน':>8}{'ผลจริง':>12}{'ผลที่ภาพแสดง':>16}{'ตัวคูณคำโกหก':>16} คำตัดสิน")
for floor in (0, 90, 95, 98, 99):
real, shown, lf = lie_factor(102, 100, floor)
verdict = "ซื่อสัตย์" if 0.95 <= lf <= 1.05 else f"เกินจริง {lf:.0f} เท่า"
print(f"{floor:>8}{real * 100:>11.2f}%{shown * 100:>15.2f}%{lf:>16.2f} {verdict}")
print("\nTufte เสนอว่าตัวคูณควรอยู่ราว 1 — ห่างจาก 1 มากเท่าไหร่ ภาพก็โกหกมากเท่านั้น")
print("แต่ 'โกหก' ที่นี่หมายถึงสัดส่วนบิดเบี้ยว ไม่ได้แปลว่าคนทำตั้งใจหลอก")
# --- ความสูงแท่งที่ใช้วาด FIG 9.1 ในบทนี้ ---
H = 110.0
print("\n=== ความสูงแท่งของ FIG 9.1 ===")
for floor in (0, 95, 99):
ha, hb = 102 - floor, 100 - floor
low = round(hb / ha * H, 2)
_, _, lf = lie_factor(102, 100, floor)
print(f" ฐานแกน {floor:>3} -> สูง {low:>6} กับ {H} px -> ตัวคูณ {lf:.2f}")ผลรันจริง
ฐานแกน ผลจริง ผลที่ภาพแสดง ตัวคูณคำโกหก คำตัดสิน
0 2.00% 2.00% 1.00 ซื่อสัตย์
90 2.00% 20.00% 10.00 เกินจริง 10 เท่า
95 2.00% 40.00% 20.00 เกินจริง 20 เท่า
98 2.00% 100.00% 50.00 เกินจริง 50 เท่า
99 2.00% 200.00% 100.00 เกินจริง 100 เท่า
Tufte เสนอว่าตัวคูณควรอยู่ราว 1 — ห่างจาก 1 มากเท่าไหร่ ภาพก็โกหกมากเท่านั้น
แต่ 'โกหก' ที่นี่หมายถึงสัดส่วนบิดเบี้ยว ไม่ได้แปลว่าคนทำตั้งใจหลอก
=== ความสูงแท่งของ FIG 9.1 ===
ฐานแกน 0 -> สูง 107.84 กับ 110.0 px -> ตัวคูณ 1.00
ฐานแกน 95 -> สูง 78.57 กับ 110.0 px -> ตัวคูณ 20.00
ฐานแกน 99 -> สูง 36.67 กับ 110.0 px -> ตัวคูณ 100.009.2 แต่บางครั้งการเริ่มที่ศูนย์ต่างหากที่โกหก
ถ้าจบบทตรงนี้ คุณจะได้กฎ "แท่งต้องเริ่มจากศูนย์เสมอ" กลับไป ซึ่งผิดพอ ๆ กับที่มันถูก
ลองนึกถึงอุณหภูมิร่างกาย 36.5 กับ 38.5 องศา ถ้าบังคับให้แกนเริ่มที่ 0 แท่งสองอันจะสูงเกือบเท่ากันและภาพจะบอกว่า "ไม่มีอะไร" ทั้งที่คนหนึ่งไข้ขึ้น นั่นคือการซ่อนเรื่องสำคัญ ซึ่งก็เป็นการโกหกอีกแบบหนึ่ง
ความต่างอยู่ตรงนี้ — ศูนย์เป็นจุดอ้างอิงที่มีความหมายจริงหรือเปล่า
| ศูนย์มีความหมาย | ศูนย์ไม่มีความหมาย |
|---|---|
| ยอดขาย · จำนวนคน · งบที่ใช้ไป | อุณหภูมิร่างกาย · ปีปฏิทิน · คะแนนสอบที่เริ่มนับจาก 200 |
| "ศูนย์" แปลว่าไม่มีเลย | "ศูนย์" ไม่เคยเกิดขึ้นในความเป็นจริง |
| แท่งต้องเริ่มที่ศูนย์ | เริ่มที่ศูนย์คือการเสียพื้นที่ไปกับช่วงที่ไม่มีข้อมูล |
9.3 กฎที่ใช้ได้จริงมีสองข้อ ไม่ใช่ข้อเดียว
ข้อแรก ความยาวต้องเริ่มจากศูนย์ ตำแหน่งไม่ต้อง เพราะกราฟแท่งเข้ารหัสด้วย ความยาว ซึ่งอ่านค่าจากจุดเริ่มถึงจุดจบ ตัดฐานทิ้งเท่ากับโกหกเรื่องความยาว ส่วนกราฟเส้นหรือจุดเข้ารหัสด้วย ตำแหน่ง ซึ่งอ่านจากการเทียบกับแกน ไม่ได้อ่านจากความยาว การซูมแกนจึงไม่ผิดหลักการ
นี่คือเหตุผลที่กราฟเส้นซูมได้แต่กราฟแท่งซูมไม่ได้ และมันไม่ใช่ธรรมเนียม แต่มาจากบันไดในบทที่ 5 โดยตรง
ข้อสอง ถ้าซูม ต้องบอกให้เห็น ทำเครื่องหมายว่าแกนถูกตัด เขียนช่วงของแกนให้ชัด และอย่าให้คนอ่านต้องไปสังเกตเอาเองจากตัวเลขเล็ก ๆ ที่มุมภาพ
⚠️ ข้อนี้สำคัญกว่าที่คิด เพราะงานส่วนใหญ่ที่ถูกกล่าวหาว่า "จงใจหลอก" จริง ๆ แล้วมาจากค่าเริ่มต้นของเครื่องมือที่ซูมแกนให้อัตโนมัติ โดยคนทำไม่ได้ตั้งใจและไม่รู้ตัวด้วยซ้ำ การรู้กลไกจึงป้องกันได้ทั้งการโดนหลอกและการเผลอหลอกคนอื่น
ถามว่าศูนย์มีความหมายไหม ก่อนถามว่าแกนควรเริ่มที่ไหน