ข้ามไปยังเนื้อหา
Tayakorn

ทำไมตาถึงอ่านกราฟนี้ได้เร็วกว่า

LEVEL 3 · ระดับสูง

หัวข้อเดียวที่พูดแทนทั้งกราฟ

บทที่แล้วจบด้วยคำสัญญาว่าจะบีบทุกอย่างลงเหลือประโยคเดียว บทนี้คือประโยคนั้น

และมันไม่ใช่เรื่องของการเขียนให้เก่ง — เพราะถึงคุณจะเลือกช่องทางถูกทุกข้อตามสิบสองบทที่ผ่านมา ก็ยังมีข้อเท็จจริงบางข้อที่ไม่มีช่องทางไหนแบกไหว ข้อพวกนั้นไม่ได้หายไปไหน มันรอคุณอยู่ที่บรรทัดบนสุดของสไลด์

13.1 ช่องทางที่ไม่เคยอยู่ในบันได

บทที่ 4 นับช่องทางเข้ารหัสได้เจ็ดอย่าง บทที่ 5 เอามาเรียงเป็นบันไดเจ็ดขั้นตามความแม่นที่วัดกับคนจริง แล้วทั้งเล่มก็ไต่บันไดนั้นมาตลอดสิบบท

แต่บนสไลด์จริงมีของอีกชิ้นที่แบกข้อมูลอยู่ทุกใบ และมันไม่เคยโผล่ในลิสต์ทั้งสองอันเลย — ตัวหนังสือ

เหตุผลที่มันไม่อยู่ในลิสต์นั้นตรงไปตรงมา ลิสต์ของบทที่ 4 นับเฉพาะคุณสมบัติที่ แปลงค่าเป็นรูปทรง ได้แก่ความยาว มุม พื้นที่ ความเข้ม ส่วนตัวหนังสือไม่ได้แปลงอะไรเลย มันเขียนเลข 25 ลงไปตรง ๆ แล้วคนอ่านก็ได้เลข 25 กลับไป

พูดด้วยภาษาของสายพานในบทที่ 3 คือ ตัวหนังสือข้ามขั้นถอดรหัสเชิงเรขาคณิตไปทั้งขั้น ไม่มีการบีบ ไม่มีการขยาย ไม่มีความคลาดเคลื่อนแบบที่เราวัดมาสิบบท

ตัวหนังสือไม่ได้อยู่บนบันได เพราะมันไม่ได้ปีนบันไดตั้งแต่แรก มันเดินอ้อมไป

ถ้าจบตรงนี้ คำตอบก็ควรจะเป็น "งั้นก็เขียนตัวเลขทั้งหมดลงไปสิ" ซึ่งผิด และเหตุผลที่ผิดอยู่ในบทที่ 2

การอ่านตัวหนังสือคืองานโหมดไล่ทีละชิ้นเต็มตัว คนอ่านต้องกวาดสายตาไปทีละคำ เวลาที่ใช้แปรตามจำนวนคำเกือบเป็นเส้นตรง ตรงข้ามกับกราฟที่ส่งรูปร่างทั้งหน้ามาถึงตาพร้อมกัน

นั่นคือค่าผ่านทางของทางอ้อม — ตัวหนังสือแม่นที่สุด แต่ขยายไม่ได้ ภาพหนึ่งภาพรับข้อมูลได้เป็นพัน ส่วนหัวสไลด์รับได้ประโยคเดียว

💡 ทำไมถึงเป็น "ประโยคเดียว" ไม่ใช่ "ย่อหน้าเดียว" — ไม่ใช่กฎการเขียน แต่มาจากบทที่ 12 · หลักพีระมิดบอกว่าข้อสรุปต้องมาก่อน และความสนใจของคนอ่านถูกใช้ไปเรื่อย ๆ · ทุกประโยคที่คุณเพิ่มในหัวสไลด์ คือการใช้ทรัพยากรก้อนเดียวกับที่กราฟข้างล่างต้องใช้

13.2 ข้อเท็จจริงไหนที่ภาพแบกไหว ข้อไหนที่ไม่ไหว

คำถามที่ใช้ได้จริงจึงไม่ใช่ "หัวข้อควรเขียนว่าอะไร" แต่เป็น "ภาพข้างล่างแบกอะไรไม่ไหวบ้าง" ซึ่งเป็นคำถามที่คำนวณได้ตรง ๆ ด้วยเครื่องมือที่มีอยู่แล้วตั้งแต่บทที่ 5

ช่องว่างแต่ละคู่ได้ส่วนแบ่งเท่าไหร่ของช่วงที่ช่องทางมีให้ (เกณฑ์ 5%)สี่เหลี่ยมทึบ = ภาพส่งข้อนั้นถึงคนอ่านได้เอง · สี่เหลี่ยมประ = ส่งไม่ถึง ต้องเขียนบอกในหัวข้อแท่ง — ความยาววงกลม — มุมอันดับ 1 กับ 2ต่าง 3 จุด12.00%3.00%อันดับ 2 กับ 3ต่าง 3 จุด12.00%3.00%อันดับ 3 กับ 4ต่าง 1 จุด4.00%1.00%อันดับ 4 กับ 5ต่าง 2 จุด8.00%2.00%หัวตารางกับท้ายตารางต่าง 9 จุด36.00%9.00%แท่ง — ตกค้าง 1 ข้อ จึงได้หัวข้อยาว 55 ตัวอักษรวงกลม — ตกค้าง 4 ข้อ จึงได้หัวข้อยาว 127 ตัวอักษร
FIG 13.1 ข้อเท็จจริงห้าข้อจากข้อมูลชุดเดียวกัน · แท่งส่งถึงคนอ่านได้ 4 จาก 5 ข้อ เหลือให้หัวข้อแบกข้อเดียว · วงกลมส่งถึงได้ 1 จาก 5 ข้อ เหลือให้หัวข้อแบกสี่ข้อ · ผลคือหัวข้อยาวขึ้นจาก 55 เป็น 127 ตัวอักษร โดยตัวเลขต้นทางไม่ขยับเลยสักตัว

ชุดข้อมูลเดิมของเราให้ข้อเท็จจริงห้าข้อ คือช่องว่างระหว่างอันดับที่ติดกันสี่คู่ บวกช่วงจากหัวตารางถึงท้ายตารางอีกหนึ่ง สคริปต์ข้างล่าง (headline.py) เอาแต่ละข้อไปหารด้วยช่วงที่ช่องทางมีให้ แล้วตัดสินด้วยเกณฑ์ K ตัวเดียวกับ channels.py ในบทที่ 5

"""หัวข้อคือที่เก็บของข้อเท็จจริงที่ช่องทางภาพแบกไม่ไหว — และคำนวณได้ว่ามีข้อไหนบ้าง"""

DATA = [("", 22), ("", 18), ("", 25), ("", 16), ("", 19)]
K = 0.05  # เกณฑ์เดียวกับ channels.py ในบทที่ 5 — ช่องว่างต้องกินกี่ส่วนของช่วง ถึงจะหวังให้ตาแยกออก

vals = [v for _, v in DATA]
hi, total = max(vals), sum(vals)
rank = sorted(DATA, key=lambda kv: -kv[1])


def share_of_range(gap, channel):
    """ช่องว่าง gap หน่วย ได้ส่วนแบ่งเท่าไหร่ของช่วงที่ช่องทางนั้นมีให้ — สูตรเดียวกับบทที่ 5"""
    return gap / hi if channel == "ความยาว" else gap / total


# --- 1. ข้อเท็จจริงของสไลด์ ทุกข้อคือช่องว่างระหว่างค่าสองค่า ---
#     คู่ที่ติดกันในอันดับทุกคู่ บวกคู่หัว-ท้ายซึ่งเป็นช่วงกว้างสุดของชุด
steps = [(rank[i], rank[i + 1]) for i in range(len(rank) - 1)]
FACTS = [(f"อันดับ {i + 1} กับ {i + 2}", a, b) for i, (a, b) in enumerate(steps)]
FACTS.append(("หัวตารางกับท้ายตาราง", rank[0], rank[-1]))

# --- 2. ช่องทางไหนแสดงข้อไหนได้เอง ข้อที่เหลือคือภาระของหัวข้อ ---
CHANNELS = ["ความยาว", "มุม"]
homeless = {ch: [] for ch in CHANNELS}

print("=== ข้อเท็จจริงห้าข้อ ผ่านสองช่องทาง ===")
for label, a, b in FACTS:
    gap = a[1] - b[1]
    cells = []
    for ch in CHANNELS:
        share = share_of_range(gap, ch)
        if share < K:
            homeless[ch].append((a[0], b[0], gap))
        cells.append(f"{ch} {share * 100:5.2f}% {'ภาพแสดงได้' if share >= K else 'ภาพแสดงไม่ได้'}")
    print(f"  {label} (หน่วย {a[0]} {a[1]} กับ หน่วย {b[0]} {b[1]} · ต่าง {gap} จุด)")
    for cell in cells:
        print(f"    {cell}")


# --- 3. ประกอบประโยค: ข้อสรุปขึ้นก่อน แล้วต่อด้วยข้อที่ภาพแบกไม่ไหว ---
def compose(channel):
    parts = [f"หน่วย {rank[0][0]} ใช้มากที่สุด {rank[0][1]} จาก {total}"]
    parts += [f"{a} กับ {b} ต่างกัน {gap} จุด" for a, b, gap in homeless[channel]]
    return " · ".join(parts)


print("\n=== หัวข้อที่ประกอบจากข้อที่เหลือ ===")
for ch in CHANNELS:
    line = compose(ch)
    print(f"  ช่องทาง {ch}: ตกค้าง {len(homeless[ch])} จาก {len(FACTS)} ข้อ "
          f"· หัวข้อยาว {len(line)} ตัวอักษร")
    print(f"    {line}")

extra = len(compose("มุม")) - len(compose("ความยาว"))
print(f"\nย้ายไปช่องทางที่แย่กว่า หัวข้อยาวขึ้น {extra} ตัวอักษร โดยข้อมูลไม่ขยับเลยสักตัว")
print("หัวข้อที่ยาวขึ้นเรื่อย ๆ จึงไม่ใช่ปัญหาการเขียน แต่เป็นใบเสร็จของช่องทางที่เลือก")

# --- 4. ตัวเลขทุกตัวที่ปรากฏใน FIG 13.1 ---
print("\n=== ตัวเลขทุกตัวใน FIG 13.1 ===")
for label, a, b in FACTS:
    gap = a[1] - b[1]
    cells = " | ".join(
        f"{ch} {share_of_range(gap, ch) * 100:.2f}%"
        f"{'' if share_of_range(gap, ch) >= K else ' (ตก)'}"
        for ch in CHANNELS
    )
    print(f"  แถว '{label}' {gap} จุด: {cells}")
for ch in CHANNELS:
    print(f"  หัวข้อของช่องทาง {ch}: ตกค้าง {len(homeless[ch])} ข้อ · {len(compose(ch))} ตัวอักษร")

ผลรันจริง

=== ข้อเท็จจริงห้าข้อ ผ่านสองช่องทาง ===
  อันดับ 1 กับ 2 (หน่วย ค 25 กับ หน่วย ก 22 · ต่าง 3 จุด)
    ความยาว 12.00% ภาพแสดงได้
    มุม  3.00% ภาพแสดงไม่ได้
  อันดับ 2 กับ 3 (หน่วย ก 22 กับ หน่วย จ 19 · ต่าง 3 จุด)
    ความยาว 12.00% ภาพแสดงได้
    มุม  3.00% ภาพแสดงไม่ได้
  อันดับ 3 กับ 4 (หน่วย จ 19 กับ หน่วย ข 18 · ต่าง 1 จุด)
    ความยาว  4.00% ภาพแสดงไม่ได้
    มุม  1.00% ภาพแสดงไม่ได้
  อันดับ 4 กับ 5 (หน่วย ข 18 กับ หน่วย ง 16 · ต่าง 2 จุด)
    ความยาว  8.00% ภาพแสดงได้
    มุม  2.00% ภาพแสดงไม่ได้
  หัวตารางกับท้ายตาราง (หน่วย ค 25 กับ หน่วย ง 16 · ต่าง 9 จุด)
    ความยาว 36.00% ภาพแสดงได้
    มุม  9.00% ภาพแสดงได้

=== หัวข้อที่ประกอบจากข้อที่เหลือ ===
  ช่องทาง ความยาว: ตกค้าง 1 จาก 5 ข้อ · หัวข้อยาว 55 ตัวอักษร
    หน่วย ค ใช้มากที่สุด 25 จาก 100 · จ กับ ข ต่างกัน 1 จุด
  ช่องทาง มุม: ตกค้าง 4 จาก 5 ข้อ · หัวข้อยาว 127 ตัวอักษร
    หน่วย ค ใช้มากที่สุด 25 จาก 100 · ค กับ ก ต่างกัน 3 จุด · ก กับ จ ต่างกัน 3 จุด · จ กับ ข ต่างกัน 1 จุด · ข กับ ง ต่างกัน 2 จุด

ย้ายไปช่องทางที่แย่กว่า หัวข้อยาวขึ้น 72 ตัวอักษร โดยข้อมูลไม่ขยับเลยสักตัว
หัวข้อที่ยาวขึ้นเรื่อย ๆ จึงไม่ใช่ปัญหาการเขียน แต่เป็นใบเสร็จของช่องทางที่เลือก

=== ตัวเลขทุกตัวใน FIG 13.1 ===
  แถว 'อันดับ 1 กับ 2' 3 จุด: ความยาว 12.00% | มุม 3.00% (ตก)
  แถว 'อันดับ 2 กับ 3' 3 จุด: ความยาว 12.00% | มุม 3.00% (ตก)
  แถว 'อันดับ 3 กับ 4' 1 จุด: ความยาว 4.00% (ตก) | มุม 1.00% (ตก)
  แถว 'อันดับ 4 กับ 5' 2 จุด: ความยาว 8.00% | มุม 2.00% (ตก)
  แถว 'หัวตารางกับท้ายตาราง' 9 จุด: ความยาว 36.00% | มุม 9.00%
  หัวข้อของช่องทาง ความยาว: ตกค้าง 1 ข้อ · 55 ตัวอักษร
  หัวข้อของช่องทาง มุม: ตกค้าง 4 ข้อ · 127 ตัวอักษร

บรรทัดที่ควรอ่านซ้ำคือสองบรรทัดสุดท้ายของหัวข้อ 55 ตัวอักษรกับ 127 ตัวอักษร ข้อมูลชุดเดียวกันเป๊ะ แต่พอเปลี่ยนช่องทางจากแท่งเป็นวงกลม หัวข้อต้องยาวขึ้นเกินสองเท่าเพื่อจะพูดเรื่องเดิมให้ครบ

เหตุผลไม่ได้อยู่ที่การเขียน มันอยู่ที่ว่าวงกลมส่งข้อเท็จจริงถึงคนอ่านได้แค่ข้อเดียวจากห้าข้อ ที่เหลืออีกสี่ข้อจึงตกมาให้ประโยคเดียวนั้นแบกทั้งหมด

ถ้าหัวข้อของคุณยาวขึ้นเรื่อย ๆ นั่นไม่ใช่ปัญหาการเขียน มันคือใบเสร็จว่าภาพข้างล่างแบกไม่ไหว

13.3 ประกอบเป็นประโยคเดียว

สคริปต์ข้างบนประกอบประโยคด้วยกฎสองข้อ และทั้งสองข้อมาจากบทก่อนหน้าทั้งคู่

ข้อแรก ขึ้นต้นด้วยข้อสรุป — มาจากหลักพีระมิดในบทที่ 12 คนอ่านที่ยังไม่รู้ว่ากำลังจะไปไหน ต้องแบกทุกอย่างไว้ในหัวเผื่อว่ามันจะสำคัญ

ข้อสอง ต่อด้วยข้อที่ภาพแสดงไม่ได้ — มาจากบทที่ 6 ช่องว่างที่เล็กกว่าเกณฑ์ไม่ได้แค่ "เห็นยาก" มันไม่ได้ถูกส่งไปถึงคนอ่านเลย ถ้าคุณไม่เขียน ก็ไม่มีใครรู้

ลองเทียบกับ FIG 1.1 ในบทแรกของเล่ม หัวข้อของแผงขวาคือ "หน่วย ค ใช้มากที่สุด แต่ห่างอันดับสองแค่ 3 จุด" ซึ่งตอนนั้นมันดูเหมือนการเขียนที่ดี ตอนนี้คุณเห็นแล้วว่ามันไม่ใช่รสนิยม — มันคือผลลัพธ์ที่คำนวณออกมาได้

⚠️ สิ่งที่สคริปต์ทำได้คือหาข้อเท็จจริง ไม่ใช่ถ้อยคำ ประโยคที่มันพิมพ์ออกมายังแข็งอยู่ และคุณควรเกลาให้อ่านลื่นขึ้น แต่กติกามีข้อเดียว — เกลาถ้อยคำได้ ห้ามเพิ่มข้อเท็จจริง เพราะทุกข้อในรายการมีที่มาจากตัวเลข ส่วนข้อที่คุณเติมเองไม่มี

เคล็ดลับ: ถ้าเขียนหัวข้อไม่ออก อย่าเพิ่งโทษตัวเอง ให้กลับไปดูก่อนว่าคุณตอบได้ไหมว่าช่องว่างที่แคบที่สุดในชุดคือเท่าไหร่ ถ้าตอบไม่ได้ แปลว่ายังไม่รู้ว่าข้อมูลกำลังบอกอะไร ไม่ใช่เขียนไม่เป็น

13.4 หัวข้อก็มีตัวคูณคำโกหกของมันเอง

มาถึงตรงนี้เล่มนี้เชียร์หัวข้อที่บอกข้อสรุปมาตลอด จึงต้องพูดอีกด้านให้ชัด

หัวข้อที่บอกข้อสรุปคือคำกล่าวอ้าง และคำกล่าวอ้างมีราคาที่บทที่ 9 สอนไว้แล้ว — ตัวคูณคำโกหกวัดว่า ภาพ แสดงผลใหญ่กว่าที่ ข้อมูล มีจริงกี่เท่า หัวข้อก็วัดแบบเดียวกันได้

ความต่างอยู่ตรงที่มันร้ายกว่า เพราะข้อเท็จจริงที่หัวข้อแบกอยู่ คือข้อที่ภาพแสดงไม่ได้ตั้งแต่แรก คนอ่านจึงไม่มีทางเอาภาพมาตรวจประโยคของคุณได้เลย

หัวข้อข้อมูลรองรับไหมคนอ่านตรวจได้ไหม
หน่วย ค ใช้มากที่สุด 25 จาก 100รองรับตรวจได้จากแท่ง
จ กับ ข ต่างกัน 1 จุดรองรับตรวจไม่ได้ ต้องเชื่อคุณ
หน่วย ค ทิ้งห่างหน่วยอื่นแบบขาดลอยไม่รองรับ ห่างอันดับสองแค่ 3 จุดตรวจไม่ได้ ต้องเชื่อคุณ

แถวที่สองกับสามหน้าตาเหมือนกันในสายตาคนฟัง ทั้งคู่คือประโยคที่ต้องเชื่อ ต่างกันแค่ว่าแถวหนึ่งจริงและอีกแถวไม่จริง

หัวข้อคือที่ที่คุณใช้เครดิตของตัวเอง ไม่ใช่ที่ที่คุณใช้ข้อมูลของคนอื่น

และมีสถานการณ์ที่หัวข้อ ไม่ควร บอกข้อสรุปอยู่จริง สองแบบ

  • หน้าที่เอาไว้เปิดหา เช่นตารางอ้างอิงหรือภาคผนวก ซึ่งงานของมันคือให้คนไปหยิบตัวเลขที่ต้องการ ไม่ใช่พาไปหาข้อสรุปเดียว
  • ตอนที่คุณยังไม่มีข้อสรุป ซึ่งเกิดขึ้นจริงและไม่ใช่เรื่องน่าอาย · หัวข้อที่บอกชื่อเรื่องแล้วบอกตรง ๆ ว่ายังตอบไม่ได้ ดีกว่าหัวข้อที่แต่งข้อสรุปขึ้นมาให้ดูเป็นมืออาชีพ

อ่านแบบเต็มเล่ม