3 คะแนน โดย GN⁺ 2023-11-21 | 2 ความคิดเห็น | แชร์ทาง WhatsApp
  • เป็น GitHub repository ที่รวบรวม แนวปฏิบัติด้าน Visualization ที่ผิดพลาด 16 ข้อ ซึ่งมักพบในงานวิจัยวิทยาศาสตร์และการวิเคราะห์ข้อมูล พร้อมตัวอย่าง โดยสามารถทำซ้ำแต่ละกรณีได้เองผ่านโค้ด R และข้อมูลจำลอง
  • ชี้ให้เห็นอย่างเป็นรูปธรรมถึง Visualization ที่บิดเบือนการกระจายและลักษณะของข้อมูล เช่น การใช้ bar graph เปรียบเทียบค่าเฉลี่ยอย่างผิดวิธี, violin plot กับตัวอย่างขนาดเล็ก, และการใช้สเกลสีแบบสองทิศทางกับข้อมูลทิศทางเดียว
  • อธิบายปัญหาของ ประเภทแผนภูมิที่ไม่คำนึงถึงลักษณะการรับรู้ทางสายตาของมนุษย์ เช่น การไม่จัดเรียงแถว/คอลัมน์ใหม่ใน heatmap, การไม่ตรวจสอบ outlier, และข้อจำกัดพื้นฐานของ pie chart กับ donut chart แบบวงซ้อน
  • รวมคำเตือนเกี่ยวกับ ข้อผิดพลาดเชิงโครงสร้างในการออกแบบที่ทำให้เข้าใจผิด เช่น การสับสนระหว่าง Visualization แบบอิงตำแหน่งกับแบบอิงความยาว และ bar graph ที่ตัดแกน
  • เป็น ชุด anti-pattern เชิงปฏิบัติ ที่นักวิจัยและนักพัฒนาทุกคนซึ่งทำงานกับ Data Visualization ใช้อ้างอิงได้ พร้อมเสนอวิธี Visualization ทางเลือกในแต่ละหัวข้อ

1. อย่าใช้ bar graph เพื่อเปรียบเทียบค่าเฉลี่ย

  • แผนภาพเปรียบเทียบค่าเฉลี่ย (means separation) เป็นหนึ่งใน Visualization ที่พบบ่อยที่สุดในบทความวิทยาศาสตร์ โดยมีเป้าหมายเพื่อแสดง ค่าเฉลี่ย ความแปรปรวน และการกระจาย ของกลุ่มตั้งแต่สองกลุ่มขึ้นไป
  • ในตัวอย่าง กลุ่มสองกลุ่มมีค่าเฉลี่ยและส่วนเบี่ยงเบนมาตรฐานคล้ายกัน แต่ การกระจายแตกต่างกันโดยสิ้นเชิง — หากดูแค่ bar graph จะตรวจจับความต่างนี้ไม่ได้
  • ก่อนใช้ bar graph ต้องตรวจสอบการกระจายของข้อมูลเสมอ และ Weissgerber et al. (2015, PLOS Biology) ก็ชี้ให้เห็น ข้อจำกัดของ bar graph เช่นกัน

2. อย่าใช้ violin plot กับตัวอย่างขนาดเล็ก

  • violin plot หรือ เส้นโค้งการกระจายแบบปรับเรียบ ไม่มีความหมายเมื่อขนาดตัวอย่างเล็ก
  • ในตัวอย่างขนาดเล็ก แม้เป็นค่าที่สังเกตได้ชุดเดียวกัน การกระจายและควอไทล์ก็อาจเปลี่ยนแปลงมาก และ ต้องมี n อย่างน้อย 50 เพื่อให้ควอไทล์เสถียร
  • เรื่องนี้พิสูจน์ด้วยผลการทดลองที่สุ่มตัวอย่างซ้ำหลายครั้งจากการแจกแจงปกติเดียวกันแล้วเปรียบเทียบควอไทล์

3. อย่าใช้สเกลสีแบบสองทิศทางกับข้อมูลทิศทางเดียว

  • ในสเกลสี สีที่เข้มที่สุดและสีที่อ่อนที่สุด ควรแทนค่าที่มีความหมาย เช่น ค่าสูงสุด ค่าต่ำสุด ค่าเฉลี่ย หรือ 0
  • การให้สีที่อ่อนที่สุดหรือเข้มที่สุดแทน ตัวเลขตามอำเภอใจ เป็นข้อผิดพลาดร้ายแรงพอ ๆ กับ “แท่งที่ยาวที่สุดใน bar chart ไม่ใช่ค่าสูงสุด”
  • เมื่อใช้ heatmap/gradient สี จำเป็นต้องเลือกสเกลสีให้เหมาะกับทิศทางของข้อมูล (ทิศทางเดียว vs. สองทิศทาง)

4. อย่าสร้างทุ่ง bar plot (Bar Plot Meadow)

  • เมื่อนำผลการทดลองแบบ หลายปัจจัย มาเรียงเป็น bar graph จะกลายเป็น “ทุ่ง bar graph” ที่สื่อสารผลลัพธ์ได้ไม่มีประสิทธิภาพ
  • หากต้องการสื่อสารผลการทดลองหลายปัจจัยให้มีประสิทธิภาพ ต้อง ออกแบบการจัดกลุ่ม/การทำ facet อย่างรอบคอบ ตามปัจจัยที่สนใจ
  • ในตัวอย่างมีการเปรียบเทียบผลของ Treatment และ Explant ต่อ Response ที่ระดับ Variety และเน้นว่า layout ควรเปลี่ยนไปตามจุดเน้นของการวิเคราะห์

5. ต้องพิจารณาการจัดเรียงแถวและคอลัมน์ใหม่ใน heatmap

  • heatmap พบได้บ่อยมากในบทความวิทยาศาสตร์ โดยเฉพาะ บทความด้าน omics แต่หากไม่จัดเรียงลำดับแถวและคอลัมน์ใหม่ ก็ไม่สามารถดึงข้อมูลที่เป็นประโยชน์ออกมาได้
  • การจัดเรียงใหม่ด้วย clustering เป็นวิธีทั่วไป แต่ไม่ใช่วิธีเดียว และในกรณีที่แสดง การจัดวางทางกายภาพ เช่น 96-well plate จะไม่สามารถจัดเรียงใหม่ได้
  • เมื่อผสานการจัดเรียงแถว/คอลัมน์ใหม่กับ gradient สีที่เหมาะสม จะสร้าง heatmap ที่สวยงามทางสายตา ได้ด้วย

6. ต้องตรวจสอบ outlier ใน heatmap

  • outlier สามารถเปลี่ยนการรับรู้และการตีความ heatmap ได้โดยสิ้นเชิง และเป็นปัญหาที่ใช้ได้กับ Visualization ทุกแบบที่แสดงข้อมูลเชิงตัวเลขด้วยสี
  • ในตัวอย่าง ค่าสังเกต 2 ค่าโดยวัดคุณลักษณะ 20 รายการดูคล้ายกันโดยรวมเมื่อไม่ได้ตรวจสอบ outlier แต่เมื่อ ปรับสเกลสีโดยอิงเปอร์เซ็นไทล์ที่ 95 ความแตกต่างในทุกคุณลักษณะจะปรากฏชัด

7. ตรวจสอบช่วงข้อมูลในแต่ละระดับของปัจจัย

  • ในการทดลองหลายปัจจัย มักพบว่า ช่วงของตัวแปรตอบสนอง แตกต่างกันมากตามระดับของปัจจัย
  • ในการทดลองสมมติที่วัดสารประกอบ 3 ชนิดใน 2 กลุ่ม (กลุ่มควบคุม vs. กลุ่มรักษา) ช่วงความเข้มข้นของสารประกอบ 1 แคบกว่าสารประกอบอื่นมาก จึงมี ความเสี่ยงที่จะพลาดผลของการรักษา
  • หากไม่ตรวจสอบช่วงข้อมูลของสารประกอบแต่ละชนิดล่วงหน้า อาจ มองข้ามผลของการรักษาที่สำคัญ ได้

8. ลอง layout หลายแบบใน network graph

  • รูปลักษณ์ภายนอกของ network graph (layout ไม่ใช่ topology) ส่งผลอย่างมากต่อประสิทธิผล
  • จากข้อมูลเดียวกัน network graph 3 แบบดูแตกต่างกันโดยสิ้นเชิง และยังมีตัวอย่างที่ใช้ layout แตกต่างกัน 9 แบบ
  • เนื่องจาก layout ทำให้ ความยากง่ายในการตีความ network แตกต่างกันมาก จึงควรลอง layout หลายแบบ

9. อย่าสับสนระหว่าง Visualization แบบอิงตำแหน่งกับแบบอิงความยาว

  • ใน dot/line graph ค่าถูกแสดงด้วย ตำแหน่ง บนแกน x และ y ส่วนใน bar graph ค่าถูกแสดงด้วย ระยะทาง (ความยาว) จากแกน x
  • ในตัวอย่าง bar graph ที่ไม่ได้เริ่มจาก 0 ทำให้ความยาวแท่งของช่วงเวลา 2 ดูยาวประมาณ 3 เท่าของช่วงเวลา 1 แต่ความต่างของค่าเฉลี่ยจริงอยู่ที่ประมาณ 1.6 เท่า — การสับสนระหว่างความยาวกับตำแหน่งทำให้สร้างกราฟที่ชวนเข้าใจผิด
  • ระวัง bar graph แบบตัดแกน (Broken Axis)

    • การตัดแกนมีประโยชน์เมื่อแสดงค่าที่มีช่วงกว้าง (ทางเลือกคือใช้ แกนสเกลลอการิทึม) แต่เหมาะเฉพาะกับกราฟแบบอิงตำแหน่งเท่านั้น
    • ใน bar graph การเปลี่ยนตำแหน่งที่ตัดแกนจะทำให้เกิด ภาพลวงตา ว่าแท่งบางแท่งยาวขึ้นหรือสั้นลง
    • ในตัวอย่าง ความยาวของแท่ง “d” ดูแตกต่างกันมากตามตำแหน่งที่ตัดแกน เพราะ bar graph เป็นกราฟิกแบบอิงความยาว

10. อย่าสร้าง pie chart

  • pie chart แสดงข้อมูลสัดส่วนโดยแบ่งเป็นเซกเตอร์ในวงกลม แต่มนุษย์ อ่านความยาวได้ดีกว่ามุมและพื้นที่มาก
  • ในตัวอย่างที่มี 2 กลุ่ม โดยแต่ละกลุ่มมีหมวดหมู่ย่อย 4 หมวด pie chart ทำให้ เปรียบเทียบระหว่างกลุ่มได้ยากมาก
  • แม้จะทำให้ง่ายขึ้นเป็น donut chart ก็ยังเป็นการแสดงข้อมูลด้วยความยาวของส่วนโค้ง ดังนั้นการคลี่ donut ออกเป็น stacked bar graph จึงมีประสิทธิภาพในการเปรียบเทียบมากกว่าอย่างมาก
  • ใน ggplot สคริปต์สำหรับ pie chart และ donut chart กลับ ซับซ้อนกว่า stacked bar ด้วยซ้ำ

11. อย่าสร้าง donut chart แบบวงซ้อน

  • ใน donut แบบวงซ้อน อาจคิดได้ง่ายว่าข้อมูลถูกแสดงด้วยความยาวส่วนโค้ง แต่ จริง ๆ แล้วแสดงด้วยมุมของส่วนโค้ง และมนุษย์ไม่ถนัดในการอ่านมุมของส่วนโค้ง
  • ความยาวส่วนโค้งของวงนอกยาวกว่าวงในมาก ทำให้แม้ Group 2 และ Group 3 จะมีค่าเท่ากัน แต่ ความยาวส่วนโค้งของ Group 3 ดูยาวกว่ามาก
  • ลำดับของกลุ่ม (กลุ่มใดถูกวางบนวงใด) ส่งผลต่อความประทับใจของ plot อย่างมาก จนอาจเกิด ความย้อนแย้งที่ค่ามากกว่ามีส่วนโค้งสั้นกว่า
  • ปัญหาเดียวกันนี้ใช้กับ layout แบบวงกลม เช่น circos plot ด้วย และทางเลือกคือเพียงคลี่ donut ออกเป็น stacked bar plot

12. อย่าใช้สเกลสีแดง/เขียวและสีรุ้ง

  • ภาวะตาบอดสีแดง-เขียว (Deuteranomaly) เป็นรูปแบบตาบอดสีที่พบบ่อยที่สุด โดยพบในผู้ชาย 1/16 และผู้หญิง 1/256
  • สเกลสีแดง/เขียวและสีรุ้งสร้างปัญหาให้ผู้ใช้ที่ตาบอดสี และเมื่อพิมพ์ขาวดำก็ รักษาข้อมูลไว้ได้แย่มาก
  • สเกลสี “สมัยใหม่” อย่าง viridis เป็นมิตรต่อผู้ที่ตาบอดสีและปลอดภัยใน grayscale อีกทั้งยังดูดีทางสายตา

13. อย่าลืมจัดเรียง stacked bar plot ใหม่

  • stacked bar plot มักใช้กับการแสดงข้อมูลสัดส่วน, โครงสร้างชุมชน, โครงสร้างประชากร, และการวิเคราะห์ admixture
  • ในตัวอย่างที่มี 100 sample และ 8 class หากไม่ปรับลำดับแท่งให้เหมาะสม จะ ไม่สามารถระบุ pattern ใด ๆ จากกราฟได้เลย
  • หลังจากจัดเรียงแท่งใหม่ pattern จะปรากฏอย่างเด่นชัด และ การจัดกลุ่ม sample กับการปรับการเรียงลำดับให้เหมาะสม คือหัวใจสำคัญ

14. อย่าผสม stacked bar กับการเปรียบเทียบค่าเฉลี่ย

  • stacked bar plot ใช้กับ ข้อมูลสัดส่วนที่รวมกันเป็น 100% ส่วน plot เปรียบเทียบค่าเฉลี่ยใช้แสดงความต่างของค่าเฉลี่ยและความแปรปรวน ทั้งสองเป็นโจทย์ Visualization ที่แตกต่างกันโดยสิ้นเชิง
  • ในตัวอย่างการทดลองพืชบลูเบอร์รี่ stacked bar plot มาตรฐานแสดงให้เห็นอย่างชัดเจนว่าการใช้สารเคมีทำให้โปรไฟล์สีของผลไม้เคลื่อนไปสู่ระยะสุกที่สุด (dark blue) อย่างแรง
  • เมื่อ overlay error bar และจุด บน stacked bar จะไม่ชัดเจนว่า error bar และจุดใดถูกนำมาเปรียบเทียบกัน และ error bar ของ stack ด้านบนถูกดันขึ้น ทำให้ การตีความแกน y ไม่เป็นธรรมชาติ
  • หากเป้าหมายหลักของ Visualization คือการเปรียบเทียบค่าเฉลี่ยและความแปรปรวน กราฟเปรียบเทียบค่าเฉลี่ยแยกต่างหาก จะเหมาะกว่า

15. อย่าใช้ histogram กับตัวอย่างขนาดเล็ก

  • แม้บางครั้ง histogram จะถูกเสนอเป็นทางเลือกแทน bar graph แต่ ความทนทานต่อจำนวน bin ในตัวอย่างขนาดเล็กต่ำมาก
  • เมื่อสุ่มตัวอย่างจากการแจกแจงปกติเดียวกันด้วย n = 10, 100, 1000 แล้ววาด histogram ด้วย 10, 30, 50 bin จะเห็นว่า แม้เป็นการแจกแจงเดียวกัน รูปร่างของ histogram ก็แตกต่างกันมาก
  • ในตัวอย่างขนาดเล็ก (n < 30) การ แสดงทุก data point ลงบนกราฟโดยตรง เป็นสิ่งที่พึงประสงค์กว่ามาก และแม้ n = 100 รูปร่างของ histogram ก็เปลี่ยนแปลงอย่างรวดเร็วตามจำนวน bin
  • เพื่อให้ histogram ทนทานต่อการเปลี่ยนจำนวน bin ต้องมี ขนาดตัวอย่างประมาณ 1000 ขึ้นไป

16. อย่าใช้ boxplot กับข้อมูลการแจกแจงสองยอด (Bimodal)

  • boxplot เน้น มัธยฐานและควอไทล์ จึงไม่สามารถแสดงข้อมูลการแจกแจงสองยอด (และหลายยอด) ได้อย่างเหมาะสม
  • ก่อนสร้าง boxplot ต้อง ตรวจสอบการกระจายของข้อมูล เสมอ
  • สำหรับขนาดตัวอย่างเล็กถึงปานกลาง (ต่ำกว่าหลายหมื่น) แนวปฏิบัติที่ดีที่สุดคือใช้ geom_quasirandom() จากแพ็กเกจ ggbeeswarm เพื่อ แสดงทุก data point โดยตรง
  • กราฟิกแบบอิงการกระจาย เช่น violin plot และ histogram ไม่ทนทาน เมื่อใช้กับตัวอย่างขนาดเล็ก

2 ความคิดเห็น

 
xguru 2023-11-21

ชื่อบทความน่าสนุกดีนะครับ ถ้าดูบทความต้นฉบับจะมีกราฟตัวอย่างแนบมาด้วยเลย ทำให้ดูเข้าใจง่ายครับ

 
GN⁺ 2023-11-21
ความคิดเห็นบน Hacker News
  • ด้านหนึ่ง เนื้อหาแบบนี้ดูค่อนข้างยอดเยี่ยม
    แต่อีกด้านหนึ่ง กราฟแย่ ๆ จำนวนมากในนี้ดูเหมือนถูกเลือกมาอย่างจงใจเพื่อซ่อนว่ามีจุดข้อมูลน้อย หรือซ่อนการแจกแจงพื้นฐานที่น่าสงสัย
    ดังนั้นมันจึงใกล้เคียงกับ “ถ้าเห็นกราฟที่ทำให้ภาพไม่ชัดแทนที่จะทำให้เห็นชัด ให้สงสัยไว้ก่อนว่าอาจเป็นเจตนา” มากกว่า “ถ้าเป็นเพื่อนกันก็ต้องห้ามไม่ให้ทำแบบนี้”

    • ก็ไม่ได้ผิด แต่บรรดานักวิจัยเองก็ไม่สมบูรณ์แบบอย่างมาก ทุกคนยุ่งตลอด ไม่มีเวลาจริง ๆ ในการปรับปรุงงาน และแรงกดดันทั้งหมดก็อยู่ที่การตีพิมพ์ เปเปอร์ที่พอใช้ได้ ออกมา
      ในบรรดาเปเปอร์ที่ผม/ฉันมีส่วนร่วม ไม่มีครั้งไหนเลยที่ท่าทีไม่ใช่ “ปล่อยออกไปเดี๋ยวนี้”
      เหตุผลที่กราฟไม่ชัดเจนมักเป็นเพราะการทำให้ชัดต้องใช้เวลาและความพยายาม ซึ่งทั้งสองอย่างนี้ขาดแคลนอย่างมากในแวดวงวิชาการ แน่นอนว่าบางครั้งก็มีการจงใจซ่อนรายละเอียดที่ไม่น่าดูอยู่บ้าง แต่ผม/ฉันไม่คิดว่านั่นเป็นแหล่งที่มาหลักของภาพแย่ ๆ เหล่านั้น
    • AMD กับ NVIDIA ก็ปล่อยกราฟที่ค่อนข้างห่วยออกมาทุกปีเหมือนกัน แต่นั่นเป็นเรื่อง จงใจ
    • ในวรรณกรรมจิตวิทยา เรื่องนี้เกิดขึ้นแน่นอนไม่ว่าจะจงใจหรือไม่ และผม/ฉันคิดว่าโดยเฉพาะข้อแรกเป็นแบบนั้น เปเปอร์จิตวิทยารายงาน ค่า p ของ ANOVA แล้วก็ทึกทักหน้าตาเฉยว่าทุกอย่างแจกแจงแบบปกติ
      บางกลุ่มก็ไม่จำเป็นต้องไปแหย่เรื่องยุ่งยากโดยไม่จำเป็น ส่วนอีกกลุ่มก็แค่ไม่รู้จริง ๆ มีคนที่ไม่ควรทำวิจัยอยู่ด้วย แต่การฝึกอบรมก็ไม่พอ และแรงงานปริญญาเอกค่าถูกก็ไม่ได้หาได้ง่าย ๆ จึงกลายเป็นแบบที่เป็นอยู่ตอนนี้
    • คนส่วนใหญ่จัดวางกราฟไม่เป็น หลายครั้งแม้แต่ป้ายกำกับแกนก็ยังใส่ให้ถูกไม่ได้
  • ตัวอย่าง “ถ้าเป็นเพื่อนกัน จะไม่ปล่อยให้ทำ heatmap ที่ไม่เอาค่านอกกลุ่มเป็นค่าสูงสุด” พบได้บ่อยมากจริง ๆ เห็นบ่อยในการแสดงสถิติของวิดีโอเกมด้วย
    ในเกมกลยุทธ์/ซิมูเลชันมี visualization จำนวนมากที่ช่วยให้ผู้เล่นเข้าใจสถานการณ์หรือปัญหา แต่ heatmap มักทำให้ไล่ระดับสีแทบใช้ไม่ได้เพราะ ผลของค่านอกกลุ่ม
    ตัวอย่างเช่น ใน Oxygen Not Included เมื่อเปิด visualization อุณหภูมิ ถ้ามีแหล่งความร้อนอย่างภูเขาไฟ สีที่เหลือทั้งหมดจะดูเย็นไปหมด ทำให้หน้าจอมักเปลี่ยนเป็นแค่สีน้ำเงินหรือสีแดงอมชมพู แยกภูเขาไฟ 1000°C ออกจากห้องไอน้ำ 270°C ที่ร้อนเกินไปเล็กน้อยไม่ได้ และทั้งคู่ก็กลายเป็นสีแดงอมชมพูเกือบสม่ำเสมอ ฐานที่ร้อนเกินไปที่ 60°C ก็ยังดูเย็นเมื่อเทียบกันจึงเป็นสีน้ำเงิน ทำให้แทบไร้ประโยชน์ในฐานะ heatmap สำหรับวินิจฉัยปัญหาอุณหภูมิ

    • ถ้าอุณหภูมิหนึ่ง ๆ บ่งชี้ปัญหาที่มีความหมาย สีควรถูก ทำให้เป็นมาตรฐาน เพื่อแสดงอุณหภูมินั้น และไม่ควรสร้างอัตโนมัติจากช่วงอุณหภูมิทั้งหมดที่มีอยู่ในขณะนั้น
      จริง ๆ แล้วการที่ความหมายของสีเปลี่ยนไปตามการเปลี่ยนแปลงของอุณหภูมิดูเป็นไอเดียที่ค่อนข้างแย่
    • ในกรณีนี้ การ แปลงข้อมูลเป็นลอการิทึม น่าจะเป็นทางแก้ที่เหมาะหรือเปล่า? ถ้าอุณหภูมิของภูเขาไฟเองไม่ใช่สิ่งที่สนใจก็ควรตัดออก หรือทำเครื่องหมายว่าเป็นค่านอกกลุ่มมากกว่า
    • เพื่อนผม/ฉันมีแผนที่ความร้อนตามตัวอักษรเลย คือกล้องถ่ายภาพความร้อนอินฟราเรด ซึ่งแสดงค่านอกกลุ่มที่ชัดเจนเป็นแถบสีแดงกับสีขาว เหมือนกล้องวิดีโอดิจิทัลแสดงบริเวณที่ overexpose
      มันทำงานได้ทั้งเป็นคำเตือน hotspot และในเวลาเดียวกันก็เป็นการเตือนให้มองข้ามจุดเหล่านั้นไปด้วย จึงมีประโยชน์มากจริง ๆ
  • ก่อนหน้านี้บน HN เคยถกเถียงกันดุเดือดกับคนหนึ่งที่บอกว่ากราฟทุกแบบที่ค่าต่ำสุดของทุกแกนไม่ใช่ 0 ล้วนทำให้เข้าใจผิด
    ตอนนั้นกำลังคุยกันเรื่องกราฟ อุณหภูมิโลกที่เพิ่มขึ้น จากการเปลี่ยนแปลงสภาพภูมิอากาศ และคนนั้นบอกว่ากราฟ misleading เพราะแกน Y คืออุณหภูมิไม่ได้เริ่มที่ 0 ไม่รู้ว่า 0 องศาฟาเรนไฮต์ หรือ 0 องศาเซลเซียส หรือแม่งเอ๊ย 0 เคลวินกันแน่
    เขายังถึงกับพูดว่า “ถ้าเป็นการเปลี่ยนแปลงที่มองไม่เห็นเมื่อกำหนดฐานไว้ที่ 0 บางทีมันอาจไม่ได้เป็นการเปลี่ยนแปลงที่มีนัยสำคัญขนาดนั้นก็ได้?” อยู่พักหนึ่งศรัทธาต่อมนุษยชาติของผม/ฉันบุบสลายไป แต่ตอนนี้ดีใจที่ดูเหมือนเราคุยกันในระดับที่สูงขึ้นแล้ว ช่วงปี 2016–2020 ดูเหมือนเป็นอีกยุคหนึ่งเลย

    • ก็ยื่นกราฟที่แกน X เป็น “ปี” แต่เริ่มตั้งแต่ ค.ศ. 0 ให้คนนั้นไปเลย
    • ถ้าอยากให้สัดส่วนของอุณหภูมิมีความหมายจริง ๆ ก็ต้องตั้งจุดศูนย์ที่ เคลวิน
      กราฟที่ทำให้ 25°C ดูเหมือน “ร้อนกว่า” 20°C อยู่ 25% อาจเรียกได้ว่าทำให้เข้าใจผิดในแง่นั้น แน่นอนว่านี่ไม่ได้ทำให้การปฏิเสธภาวะโลกร้อนมีความชอบธรรม
    • ทางแก้ง่าย ๆ คือการพล็อต การเปลี่ยนแปลงเป็น °C นับจากวันอ้างอิงหนึ่ง ๆ แค่เอา y(x_0) ไปลบออกจากทุกจุดในกราฟใด ๆ ก็พอ
    • ผม/ฉันค่อนข้างเห็นด้วยกับคำพูดที่ว่า “กราฟที่ 0 ไม่ใช่ค่าต่ำสุดของทุกแกนทำให้เข้าใจผิด” อยู่บ้าง
      เช่น กราฟแรกที่หาเจอคืออันนี้: https://religionnews.com/wp-content/uploads/2014/08/61Years-...
      มองเผิน ๆ เหมือนลดลงไป 2/3 ซึ่งทำให้เข้าใจผิด กราฟการลดลงแบบนี้มักให้ความประทับใจทางภาพที่ไม่สะท้อนขนาดการลดลงจริง
    • เป็นตัวอย่างคลาสสิกของการหยิบกฎที่ทำให้ง่ายเกินไปไปใช้กับปัญหาที่ยังเข้าใจไม่ถ่องแท้ ความรู้ตื้น ๆ นั้นอันตราย
  • หากอยากอ่านเรื่องการแสดงข้อมูลด้วยภาพเพิ่มเติม The Visual Display of Quantitative Information ของ Edward Tufte เป็นหนังสืออ้างอิงที่ยอดเยี่ยม แม้จะเป็นงานคลาสสิกที่ตีพิมพ์ครั้งแรกในปี 1983 แต่ก็ยังมีความหมายจนถึงปัจจุบัน

    • เป็นหนังสือที่น่าสนใจ และตัวอย่างที่ดีและไม่ดีนั้นสนุกมาก จึงน่าแนะนำ
      อย่างไรก็ตาม สมมติฐานหลักของหนังสือที่ว่า “จงเพิ่มอัตราส่วนหมึกต่อข้อมูลให้สูงสุด” ฟังดูสมเหตุสมผลมาก แต่มีข้อบกพร่องโดยพื้นฐาน เพราะปริมาณหมึก หรือบนหน้าจอก็คือจำนวนพิกเซลสีดำ ไม่เท่ากับความซับซ้อนทางสายตา สมองตีความข้อมูลภาพหลังจากทำการตรวจจับขอบ การจัดกลุ่ม และการประมวลผลล่วงหน้าอื่น ๆ เสร็จไปแล้ว
      หนังสือยกตัวอย่าง scatter plot ที่ลดแกนให้แสดงเฉพาะช่วงของข้อมูล แทนที่จะให้แกนมาบรรจบกันที่มุม โดยบอกว่าใช้หมึกน้อยลงและแสดงข้อมูลมากขึ้น จึงได้ประโยชน์ทั้งสองทาง แต่เมื่อเทียบกันแล้ว เห็นได้ชัดว่าเวอร์ชันที่แก้ไขแล้วซับซ้อนทางสายตามากกว่า หากเป็นหน้าที่ซับซ้อนซึ่งมีข้อความและกราฟหลายกราฟอยู่ด้วยกัน ชิ้นส่วนต่าง ๆ จะปะปนกันทางสายตาและยิ่งแย่ลง
      วิธีหนึ่งในการลดความซับซ้อนแบบนั้นคือการล้อมพื้นที่ใหญ่ ๆ อย่างพล็อตทั้งอันด้วยกรอบ แต่กรอบถือเป็นศัตรูตัวฉกาจของ Tufte ทั้งในหนังสือเล่มนั้นและที่อื่น ๆ น่าแปลกใจที่เขายังคงมีท่าทีแบบนั้น ทั้งที่มองงานแสดงผลทางสายตามาเป็นเวลานานมาก
    • เป็นหนังสือที่ดี ขอแนะนำบทความคลาสสิกของ John Tukey เรื่อง Some Graphic and Semigraphic Displays ด้วย: https://www.edwardtufte.com/tufte/tukey
      Tukey เป็นหนึ่งในเมนเทอร์ของ Tufte
    • ในมุมมองทางประวัติศาสตร์ถือว่าน่าสนใจ แต่ในยุคที่มีทรัพยากรออนไลน์มากมายกว่านั้นมาก ก็ไม่ได้มีข้อมูล “ลับ” หรือเนื้อหาเพิ่มเติมที่ควรใส่อะไรนัก
      สำหรับภาพรวมระดับสูงในการเลือกชาร์ตให้เหมาะกับข้อมูลและเรื่องราวของข้อมูล http://data-to-viz.com ยอดเยี่ยมมาก และตัวอย่างจากไลบรารีพล็อตต่าง ๆ ก็เป็นแหล่งอ้างอิงที่ดีสำหรับหาแรงบันดาลใจ เช่น https://matplotlib.org/stable/gallery/index.html
    • เป็นคำแนะนำที่ดี แต่ควรจำไว้ว่าตั้งแต่นั้นมา ประสาทวิทยาศาสตร์และ ความเข้าใจด้านการรับรู้ ได้พัฒนาขึ้นแล้ว
      น่าสนใจมากและเกี่ยวข้องกัน แต่ไม่ใช่ข้อสรุปสุดท้ายของหัวข้อนี้
    • ผมมองว่าเขาเสนอกรอบที่มี insight สำหรับคิดว่าอะไรทำให้การแสดงข้อมูลด้วยภาพดี
      แต่หลายคนพลาดตรรกะเบื้องหลัง แล้วเพียงคัดลอก สไตล์ Tufte ไปตรง ๆ ซึ่งบางครั้งผลลัพธ์ก็ดูจัดสไตล์มากเกินไปและเหมือนตั้งใจแหกขนบ ตัวอย่างที่ดีคือพล็อตเริ่มต้นของ ggplot2 ใน R
  • เป็นบทความที่ไล่ดูข้อผิดพลาดที่พบบ่อยในการแสดงข้อมูลด้วยภาพได้ดี จึงตั้งใจจะแชร์กับเพื่อนร่วมงาน ส่วนเนื้อหาเสริม ขอแนะนำอย่างยิ่งเรื่อง 39 studies about human perception in 30 mins ของ Kennedy Eliot: https://medium.com/@kennelliott/39-studies-about-human-perce...
    สามารถไล่ดูฐานงานวิจัยของข้ออ้างจำนวนมากเกี่ยวกับ best practices ในการแสดงข้อมูลด้วยภาพได้อย่างรวดเร็ว โดยเฉพาะหลักปฏิบัติแบบตายตัวที่บอกว่าอย่าใช้ pie chart นั้นน่าสนใจ เพราะเป็นหัวข้อที่นักออกแบบไม่สบายใจกันมาตั้งแต่ทศวรรษ 1930 แต่ผลวิจัยกลับยังสรุปได้ไม่ชัดเจนนัก แม้มองในแง่ดีก็ตาม

    • ยังไม่ได้อ่านบทความนี้ แต่กำลังจะเสนอ paper ล่าสุดชิ้นหนึ่ง: https://journals.sagepub.com/doi/full/10.1177/15291006211051...
      ลองดูบทความ Medium คร่าว ๆ แล้ว เหมือนว่าจะมีมุมมองต่อประเด็นเหล่านี้คล้ายกัน จึงน่าจะเสริมกันได้
  • ในข้อ “3. ถ้าเป็นเพื่อนกัน จะไม่ปล่อยให้ใช้ สเกลสีแบบสองทิศทาง กับข้อมูลทิศทางเดียว” ผมไม่เข้าใจตั้งแต่แรกว่าทำไมตัวอย่างเหล่านั้นถึงต้องใช้สี

    • ใช่เลย ไม่จำเป็นต้องเข้ารหัสข้อมูลเดียวกันซ้ำสองครั้ง แบบนั้นมีแต่ทำให้ต้องคิดมากขึ้นว่ากราฟกำลังแสดงอะไรอยู่
    • ในตัวอย่าง สเกลสีไม่ได้ทำให้อะไรดีขึ้นเลย ถึงอย่างนั้นคำแนะนำทั่วไปก็ยังดีอยู่
      ในหลายกรณี การแสดงตัวแปรเดี่ยวสามารถดีขึ้นได้ถ้าใช้สเกลสีแทนที่จะใช้แค่ระดับเทา ในกรณีแบบนั้น การใช้สเกลสองทิศทางกับข้อมูลทิศทางเดียวเป็นเรื่องแย่ และกลับกันก็เช่นกัน
    • ตรงนี้ควรเข้าใจว่า “ตัวอย่าง” เป็นการแสดง คุณสมบัติของสเกลสี มากกว่าจะเป็น use case จริง
      กล่าวคือ ไม่ใช่ตัวอย่างที่แสดงว่าเมื่อไรควรใช้สเกลสี
    • ใช้ความยาวของแท่งเพื่ออธิบายบริบท ไม่ได้แนะนำให้ใช้ทั้งสองอย่างพร้อมกัน
  • บทเรียนจำนวนมากเหล่านี้ไม่ใช่เรื่องใหม่ ดูได้จากหนังสือปี 1939 ของ Willard C. Brinton ชื่อ Graphic presentation และเข้าถึงได้ฟรี: https://archive.org/details/graphicpresentat00brinrich/mode/...

  • ในสายตาผม สิ่งเหล่านี้ก็ยังแย่ทั้งหมดอยู่ดี มี chartjunk มากเกินไป และส่วนใหญ่ก็ใช้สีมากเกินไปด้วย
    เส้นเหล่านั้นไม่ได้จำเป็นทั้งหมด ใส่ให้น้อยลงอย่างระมัดระวังจะทำให้อ่านง่ายขึ้น หนังสือเล่มไหนของ Edward Tufte ก็พูดเรื่องนี้ และแค่เทคนิคพื้นฐานไม่กี่อย่างก็ไปได้ไกลพอสมควรแล้ว

  • ไม่เคยชอบ violin plot เลย แต่ก็ไม่ได้เป็นคนในสาย data visualization แต่อย่างใด เมื่อสัปดาห์ก่อนเพิ่งบังเอิญดูวิดีโอชื่อ violin plots should not exist แล้วทุกอย่างก็ลงล็อก: https://youtu.be/_0QMKFzW9fw?feature=shared

  • จากงานวิจัยของ Bill Cleveland ได้มีการนำแนวคิดเหล่านี้บางส่วนมาร้อยเรียงเป็นกรอบที่สอดคล้องกันในงานนำเสนอชื่อ How Humans See Data
    https://www.youtube.com/watch?v=fSgEeI2Xpdc

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