Best Practices for Data Visualization

อ.ดร. สมศักดิ์ จันทร์เอม

วิทยาลัยนานาชาตินวัตกรรมดิจิทัล มหาวิทยาลัยเชียงใหม่

16 พฤศจิกายน 2568

แนะนำรายวิชา / หัวข้อ

Best Practices for Data Visualization

  • ทำไมต้องสร้างภาพข้อมูล?
  • หลักการออกแบบกราฟที่ดี
  • ตัวอย่างด้วย ggplot2, plotly, quantmod

🎯 เป้าหมาย:
ให้นักศึกษาเข้าใจหลักการพื้นฐาน และเลือกใช้กราฟ + เครื่องมือได้เหมาะสม

ทำไมต้อง Data Visualization?

  • ช่วย สรุปข้อมูลจำนวนมาก ให้ดูง่าย
  • ทำให้เห็น แนวโน้ม (trend) และ pattern
  • ช่วยสื่อสารกับผู้บริหาร / ลูกค้า / เพื่อนร่วมงาน
  • ใช้ในการเรียนการสอน และงานวิจัยได้ดีมาก

Visualization = Communication with Data

Best Practices (ภาพรวม)

  1. รู้เป้าหมาย (Know your purpose)
  2. รู้จักผู้ชม (Know your audience)
  3. เลือกประเภทกราฟให้เหมาะสม
  4. ทำให้เรียบง่าย (Keep it simple)
  5. ใช้สีอย่างมีความหมาย
  6. Label ให้ชัดเจน
  7. เล่าเรื่องด้วยข้อมูล
  8. ใช้ Interactive เมื่อเหมาะสม
  9. รักษาความถูกต้อง (Accuracy)
  10. ความสม่ำเสมอ (Consistency)

1. รู้เป้าหมาย (Know Your Purpose)

  • เราต้องการตอบคำถามอะไรจากข้อมูลชุดนี้?
  • ผู้ชมควร “เห็นอะไรเป็นอย่างแรก”?
  • กราฟนี้ช่วยสนับสนุนการตัดสินใจอะไร?

2. รู้จักผู้ชม (Know Your Audience)

  • ผู้บริหาร: ต้องการภาพรวม, KPI, dashboard
  • นักศึกษา: ต้องการตัวอย่าง, step-by-step, คำอธิบาย
  • นักวิจัย: ต้องการรายละเอียดเชิงสถิติ, สมมติฐาน, CI
  • Public: กราฟต้องง่าย อ่านได้เร็ว

ปรับ “ความลึกของข้อมูล” ให้เหมาะกับผู้ชม

3. เลือกประเภทกราฟให้เหมาะสม

เป้าหมาย กราฟที่แนะนำ
เปรียบเทียบกลุ่ม Bar chart, dot plot
แนวโน้มตามเวลา Line chart
การกระจายตัว Histogram, Density, Boxplot
ความสัมพันธ์ Scatter plot
สัดส่วน Pie/Treemap (ใช้เท่าที่จำเป็น)
ข้อมูลหุ้น Candlestick / OHLC

ตัวอย่าง ggplot2: Histogram

ตัวอย่าง ggplot2: Scatter Plot

4. ทำให้เรียบง่าย (Keep It Simple)

หลีกเลี่ยง:

  • สีเยอะเกินไป
  • Grid หนาและรก
  • 3D ที่ไม่ได้เพิ่มข้อมูล
  • ข้อความเยอะเกินไปในกราฟเดียว

ให้ “ข้อมูล” เป็นพระเอก ไม่ใช่เอฟเฟกต์

ตัวอย่าง Theme เรียบง่าย

5. ใช้สีอย่างมีความหมาย

หลักการ:

  • ใช้สีช่วยแยกกลุ่ม / เน้นจุดสำคัญ
  • ใช้สีที่คนตาบอดสีเห็นได้ดี (เช่น Viridis, ColorBrewer)
  • สี = ความหมาย ต้องสม่ำเสมอทั้งรายงาน

ตัวอย่าง Color Scale ด้วย plotly

6. Label ให้ชัดเจน

  • ชื่อกราฟควร “เล่า insight” ไม่ใช่แค่ “Scatter Plot”
  • แกนต้องมีหน่วย
  • Legend ชัดเจน
  • ถ้าเป็นไปได้ใช้ direct label ใกล้จุดข้อมูล

ตัวอย่าง Label ดี (ggplot2)

7. เล่าเรื่องด้วยข้อมูล (Tell a Story)

  • ใช้ annotation เพื่อเน้นจุดสำคัญ
  • ใส่คำอธิบายสั้น ๆ ในกราฟ
  • เรียงลำดับกราฟให้เป็นเรื่องเดียวกัน (จาก overview → detail)

ตัวอย่าง Annotation (ggplot2)

ตัวอย่างที่ 1: Scatter Plot

  • กราฟที่ออกแบบ ไม่ดี: สีแรง, background รบกวน, ไม่มี label ที่สื่อความหมาย
  • กราฟที่ออกแบบ ดี: สีเรียบ, theme สะอาด, title เล่า insight, แกนมีหน่วย

ตัวอย่างที่ 2: Bar Plot

ใช้ bar plot เพื่อแสดง “ยอดขายตามประเภทสินค้า”:

  • กราฟแย่: title กว้าง ๆ, ไม่มีแกน y ชัดเจน, สีเยอะเกินเหตุ
  • กราฟดี: สีเดียวเน้นเปรียบเทียบสูง–ต่ำ, ใส่ label บนแท่ง, axis label ชัดเจน

ตัวอย่างที่ 3: Histogram

เราจะเปรียบเทียบ:

  • กราฟแย่: สีแรง, binwidth ไม่เหมาะสม, ไม่มี label
  • กราฟดี: binwidth เหมาะสม, สีเรียบ, label ชัด

ตัวอย่างที่ 4: Time Series Line Plot

ใช้ข้อมูลจำลองแสดงแนวโน้มยอดขายรายเดือน:

  • กราฟแย่: เส้นสีฉูดฉาด, จุดเยอะเกิน, ไม่มีวันที่/หน่วย
  • กราฟดี: เส้นเรียบ, label แกนเวลา, title บอก insight

ตัวอย่างที่ 5: Pie Chart vs Bar Chart

ใช้ข้อมูลสัดส่วนประเภทลูกค้า:

  • Pie แย่: ยากต่อการเปรียบเทียบความแตกต่างเล็กน้อย
  • Bar ดี: เปรียบเทียบความสูงได้ชัดกว่า

ตัวอย่างที่ 6: Legends & Facets (รก vs ชัดเจน)

ในหลายกรณี การใช้ legend หลายสีในกราฟเดียวทำให้รก การใช้ facet แยกกราฟต่อกลุ่ม ช่วยให้เปรียบเทียบง่ายขึ้น

ตัวอย่างที่ 7: Boxplot

ตัวอย่างที่ 8: Density Plot

ตัวอย่างที่ 9: กราฟเส้นหลายกลุ่ม

ตัวอย่างที่ 10: Scale ผิด vs Scale ถูก

ตัวอย่างที่ 11: ใช้สีมาก vs ใช้สีน้อย

ตัวอย่างที่ 12: Annotation

ตัวอย่างที่ 13: Heatmap

ตัวอย่างที่ 14: Correlation Matrix

ตัวอย่างที่ 15: Time Series Forecast Vis.

ที่นี่โฟกัสที่ “การนำเสนอ” ไม่ใช่ความซับซ้อนของโมเดล

ตัวอย่างที่ 16: Candlestick Chart

กราฟนี้ “แย่” เพราะ รก ไม่มีโฟกัส และเล่าเรื่องไม่ชัด

Candlestick ที่ออกแบบดี (quantmod)

กราฟที่สอง “ดี” เพราะ เรียบง่าย เลือกเฉพาะสิ่งสำคัญ และช่วยให้คนดูเข้าใจ message ได้ทันที

ตัวอย่างที่ 17: Candlestick Chart – Bad vs Good (plotly)

BAD: ไม่มีชื่อแกน, ไม่มี title, ไม่มี hover ที่ชัดเจน (ค่า default อย่างเดียว)

GOOD: มี title, axis label, ชัดเจนว่าเป็นอะไร

ตัวอย่างที่ 18: Map Visualization (Choropleth)

ตัวอย่างที่ 19: Dashboard Layout

ตัวอย่างที่ 20: Infographics Design Principles (แนวคิด)

หลักการออกแบบ Infographic ที่ดี (ไม่ใช่แค่สวย แต่ต้องสื่อสารได้)

  • มี ข้อความหลัก (key message) ชัดเจน
  • ใช้ โครงร่าง (layout) ที่นำสายตา: บน → ล่าง, ซ้าย → ขวา
  • ใช้ ไอคอน/รูปภาพ อย่างพอดี ไม่รบกวนสาระ
  • ใช้ สี เพื่อเน้นลำดับความสำคัญ ไม่ใช่เพื่อโชว์ว่ามีสีเยอะ
  • ตัวหนังสือไม่เยอะเกินไป: ใช้ bullet + keyword
  • เว้น “space” ให้หายใจ (white space)

ตัวอย่าง “แย่”:

  • ใช้ฟอนต์หลายแบบ/หลายสีในแผ่นเดียว
  • ใส่รูป/ไอคอนเยอะจนกลบข้อมูล
  • ไม่มีจุดโฟกัสหลัก (ผู้ชมไม่รู้จะมองตรงไหนก่อน)

ตัวอย่าง “ดี”:

  • มีหัวเรื่องชัดเจน + tagline สั้น ๆ
  • ข้อมูลหลักแสดงด้วยกราฟ/ไอคอนเพียง 2–3 ชิ้น
  • สีไม่เกิน 3–4 สี, มี contrast ชัดเจน

🎨 Color Theory in Data Visualization

การเลือกใช้สีเป็นหนึ่งในปัจจัยสำคัญของ Data Visualization ที่ส่งผลต่อความเข้าใจ ความชัดเจน และความสวยงามของกราฟ

สีที่ดีช่วยให้ “ข้อมูลเด่นขึ้น”
สีที่แย่ทำให้ผู้ชม “สับสน หรืออ่านค่าผิด”

เราจะแบ่งประเภทของสีออกเป็น 4 แบบหลัก

1) 🎯 Single-Hue Color

ใช้เมื่อข้อมูลมี ค่าเดียว ไม่มีหมวดหมู่หลายกลุ่ม
เหมาะกับ dashboard ที่ต้องการความเรียบง่าย

2) 🌈 Sequential Color

ใช้สำหรับข้อมูลที่ เรียงลำดับ เช่น น้อย → มาก เหมาะกับ: heatmap, histogram, density

3) 🔵⚪🔴 Diverging Color

ใช้สำหรับข้อมูลที่มี ค่ากลางมีความหมาย เช่น 0, average, baseline

เหมาะกับ:

  • correlation matrix

  • change from baseline

4) 🎨 Qualitative Color

ใช้เมื่อข้อมูลเป็น หมวดหมู่ (categorical) สีกลุ่มต้อง “ต่างกันชัดเจน” แต่ไม่จำเป็นต้องเข้มอ่อนตามลำดับ

❌ vs ✔ ตัวอย่างสีแย่ vs สีดี

ตอนนี้เราจะดูว่าการเลือกสีผิดพลาดทำให้ตีความข้อมูลผิดได้อย่างไร

Bad vs Good ①: Rainbow Scale ❌

“สีรุ้ง” ไม่ควรใช้ เพราะ

  • ลำดับสีไม่ต่อเนื่อง
  • เกิด illusion ว่ามีจุดกระโดด
  • ไม่เหมาะกับคนตาบอดสี

Bad vs Good ②: Qualitative vs Sequential ❌

สีผิดประเภท → สับสนได้ง่ายมาก

Bad vs Good ③: สีใกล้กันเกินไป ❌

กลุ่มจะดูเหมือน “ค่าเดียวกัน”

🎯 สรุปหลักการเลือกใช้สี

  • ใช้สีตามประเภทของข้อมูล
  • หลีกเลี่ยงสีรุ้ง (rainbow)
  • เลือก palette ที่อ่านง่าย เช่น Viridis
  • สำหรับค่ามีน้ำหนัก → sequential
  • สำหรับค่าลบ/บวก → diverging
  • สำหรับหมวดหมู่ → qualitative
  • สีควรมี contrast ชัดเจน

Visris Color

🎨 Sequential Palette (ค่ามีน้ำหนัก / มีลำดับ)

เหมาะกับข้อมูล numeric ที่มีลำดับ เช่น น้อย → มาก ใช้เพื่อเน้น ความต่อเนื่อง ของข้อมูล

🎨 ตัวอย่างค่า sequential (10 สี)

🔵⚪🔴 2) Diverging Palette (ค่าลบ/บวก / มีจุดกึ่งกลาง)

ใช้เมื่อข้อมูลมี “ค่า 0” หรือ “ค่ากลาง” ที่มีความหมาย เช่น

  • ผลต่าง (difference)
  • ค่าลบ–บวก
  • ค่า deviation

🎨 ตัวอย่างค่า diverging (RdBu)

🎨 3) Qualitative Palette (ข้อมูลแบบหมวดหมู่)

ใช้เมื่อข้อมูลเป็น Category เช่น

  • A, B, C
  • ประเทศ
  • กลุ่มนักศึกษา

สีต้อง “ต่างกันชัดเจน” ไม่ใช่สีไล่ระดับ

🎨 ตัวอย่างค่า qualitative (Set2)