ความรู้โดย milo อ่าน 9 นาทีเรียบเรียงโดยมี AI ช่วย

Scatter Plot: แผนภูมิกระจายที่เล่าเรื่องราวของข้อมูลได้มากกว่าที่คุณคิด

จากกองตัวเลขสู่รูปแบบที่มองเห็นได้ Scatter Plot คือเครื่องมือสื่อสารข้อมูลที่จะช่วยให้คุณมองเห็นความสัมพันธ์ที่ซ่อนอยู่ บทความนี้พาคุณรู้จักตั้งแต่พื้นฐานไปจนถึงการเขียนโค้ดสร้างกราฟด้วย Python

สารบัญ

สมชายเป็นเจ้าของร้านกาแฟเล็กๆ ในย่านชานเมือง เขามีข้อมูลยอดขายกาแฟและอุณหภูมิเฉลี่ยของแต่ละวันเก็บสะสมมาเป็นเดือน เมื่อเขาเปิดไฟล์ Excel ดู เขาเห็นแต่ตัวเลขระเริงที่ทำให้ปวดหัว จนกระทั่งวันหนึ่งเขาตัดสินใจนำข้อมูลมาพล็อตเป็นจุดเล็กๆ บนแกนกราฟ ทันใดนั้นเอง จุดเล็กๆ เหล่านั้นก็รวมตัวกันเป็นรูปแบบที่ชัดเจน เขาเห็นว่ายิ่งอากาศร้อน ยอดขายกาแฟเย็นก็ยิ่งพุ่งสูง นี่คือพลังของ Scatter Plot หรือแผนภูมิกระจาย เครื่องมือที่เปลี่ยนกองตัวเลขที่ไร้ความหมายให้กลายเป็นเรื่องเล่าที่น่าตื่นเต้น

Scatter Plot คืออะไร?

Scatter Plot หรือแผนภูมิกระจาย คือการแสดงข้อมูลด้วยจุด (Dot) บนระนาบสองมิติ โดยมีแกนนอน (X-axis) แทนตัวแปรหนึ่ง และแกนตั้ง (Y-axis) แทนอีกตัวแปรหนึ่ง จุดแต่ละจุดที่ปรากฏบนกราฟคือข้อมูลหนึ่งงวด หรือหนึ่งเหตุการณ์

ความแตกต่างจากกราฟเส้น (Line Chart) หรือกราฟแท่ง (Bar Chart) คือ Scatter Plot ไม่ได้ถูกสร้างมาเพื่อดูแนวโน้มตามเวลา หรือเปรียบเทียบปริมาณระหว่างหมวดหมู่ แต่ถูกออกแบบมาเพื่อตอบคำถามที่ลึกซึ้งกว่านั้น นั่นคือ "ตัวแปรสองตัวนี้มีความสัมพันธ์กันหรือไม่?"

ทำไมนักพัฒนาและนักวิเคราะห์ข้อมูลต้องใช้ Scatter Plot?

ในโลกของการพัฒนาซอฟต์แวร์และการวิเคราะห์ข้อมูล การมองเห็นภาพรวม (Big Picture) เป็นสิ่งสำคัญ Scatter Plot ช่วยให้เราทำสิ่งต่อไปนี้ได้:

  • ค้นหาความสัมพันธ์ (Correlation): ดูว่าตัวแปรสองตัวเปลี่ยนไปพร้อมกันหรือไม่ และเปลี่ยนไปในทิศทางใด
  • ตรวจจับค่าผิดปกติ (Outliers): จุดที่อยู่ห่างจากกลุ่มอื่นๆ อย่างเห็นได้ชัด อาจบอกได้ว่ามีบั๊ก หรือเหตุการณ์ผิดปกติเกิดขึ้น
  • มองเห็นการจัดกลุ่ม (Clustering): ข้อมูลอาจแบ่งเป็นกลุ่มๆ ซึ่งมีประโยชน์มากในงาน Machine Learning เช่น การแบ่งกลุ่มผู้ใช้งาน (Customer Segmentation)
  • ทำนายแนวโน้ม: หากมีความสัมพันธ์ชัดเจน เราสามารถลากเส้นแนวโน้ม (Trendline) เพื่อทำนายค่าในอนาคตได้

อ่านความสัมพันธ์จาก Scatter Plot อย่างไร?

การอ่าน Scatter Plot ไม่ยากอย่างที่คิด ลองจินตนาการถึงรูปทรงของกลุ่มจุดที่เกิดขึ้น คุณจะพบกับรูปแบบหลักๆ 3 แบบ:

1. ความสัมพันธ์เชิงบวก (Positive Correlation)

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

ตัวอย่าง: เวลาที่ใช้ฝึกเขียนโค้ด (X) กับคะแนนสอบวิชาเขียนโปรแกรม (Y) ยิ่งฝึกมากเท่าไหร่ คะแนนก็มีแนวโน้มสูงขึ้น

2. ความสัมพันธ์เชิงลบ (Negative Correlation)

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

ตัวอย่าง: ราคาสินค้า (X) กับจำนวนคนที่คลิกซื้อ (Y) ยิ่งราคาแพงขึ้น จำนวนคนซื้อก็มักจะลดลง

3. ไม่มีความสัมพันธ์ (No Correlation)

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

ตัวอย่าง: รองเท้าขนาด (X) กับคะแนนไอคิว (Y) ของนักพัฒนา สองสิ่งนี้ไม่น่าจะมีความเกี่ยวข้องกันเลย

ระวัง! ตัวแปรที่ซ่อนอยู่ (Lurking Variables)

นี่คือกับดักที่นักวิเคราะห์มือใหม่มักตกเข้าไป การเห็นความสัมพันธ์เชิงบวกหรือลบ ไม่ได้แปลว่าตัวแปรหนึ่งเป็นสาเหตุของอีกตัวแปรหนึ่ง (Correlation does not imply causation)

สมมติเราพล็อตกราฟและพบว่า ยอดขายไอศกรีม (X) กับ จำนวนคนถูกฉลามกัด (Y) มีความสัมพันธ์เชิงบวกอย่างชัดเจน เราจะสรุปว่าการกินไอศกรีมทำให้ถูกฉลามกัดหรือ? แน่นอนว่าไม่ใช่ ตัวแปรที่ซ่อนอยู่คือ "อุณหภูมิในฤดูร้อน" ฤดูร้อนทำให้คนกินไอศกรีมเยอะ และก็ทำให้คนลงเล่นน้ำทะเลเยอะจึงเพิ่มโอกาสถูกฉลามกัด การรู้จักตั้งคำถามถึงตัวแปรที่ซ่อนอยู่จะทำให้คุณเป็นนักวิเคราะห์ที่เก่งขึ้น

ตัวอย่างการใช้งานจริงในโลกของนักพัฒนา

Scatter Plot ไม่ใช่แค่เครื่องมือของนักสถิติ แต่มีประโยชน์อย่างยิ่งในวงการพัฒนาซอฟต์แวร์

การวิเคราะห์ประสิทธิภาพระบบ (System Performance Analysis)

คุณสามารถพล็อตจำนวนผู้ใช้งานพร้อมกัน (Concurrent Users) บนแกน X กับเวลาตอบสนองของเซิร์ฟเวอร์ (Response Time) บนแกน Y หากกราฟออกมาเป็นเส้นตรงเฉียงขึ้น แสดงว่าระบบของคุณยังรองรับโหลดได้ แต่ถ้าจู่ๆ จุดก็กระเด็นขึ้นไปบนสุดของกราฟอย่างกะทันหัน (Outlier) นั่นคือจุดที่ระบบเริ่มทนไม่ไหวและมี Bottleneck เกิดขึ้น

การวิเคราะห์พฤติกรรมผู้ใช้ (User Behavior Analysis)

ลองพล็อตเวลาที่ผู้ใช้ใช้อยู่บนเว็บไซต์ (Time on Site) กับอัตราการแปลงเป็นลูกค้า (Conversion Rate) คุณอาจพบว่าผู้ใช้ที่อยู่นาน 10-20 นาทีมี Conversion สูงสุด แต่พออยู่เกิน 30 นาที Conversion กลับตกลง ข้อมูลนี้บอกคุณว่าเนื้อหาอาจยาวเกินไป ทำให้ผู้ใช้เบื่อก่อนตัดสินใจซื้อ

Machine Learning: Feature Selection

ก่อนเทรนโมเดล การพล็อต Scatter Plot ของ Feature แต่ละตัวเทียบกับคำตอบ (Target) จะช่วยให้คุณเห็นว่า Feature ไหนมีความสัมพันธ์กับผลลัพธ์บ้าง หากพล็อตแล้วจุดกระจายไปหมด แสดงว่า Feature นั้นอาจไม่มีประโยชน์ต่อโมเดล ควรตัดทิ้งไปเพื่อลดความซับซ้อน

ลงมือสร้าง Scatter Plot ด้วย Python

ในฐานะนักพัฒนา เราสามารถสร้าง Scatter Plot ได้ง่ายๆ ด้วยไลบรารีของ Python อย่าง matplotlib และ seaborn ซึ่งเป็นมาตรฐานในวงการ Data Science

ตัวอย่างโค้ดพื้นฐาน

import matplotlib.pyplot as plt
import numpy as np

# สร้างข้อมูลจำลอง: จำนวนชั่วโมงเขียนโค้ด vs คะแนนสอบ
hours_practiced = np.array([1, 2, 2.5, 3, 4, 5, 6, 7, 8, 9])
exam_scores = np.array([45, 50, 55, 60, 65, 75, 80, 85, 90, 95])

# สร้าง Scatter Plot
plt.scatter(hours_practiced, exam_scores, color='blue', alpha=0.7)

# ตั้งชื่อกราฟและแกน
plt.title('ความสัมพันธ์ระหว่างเวลาฝึกหัดกับคะแนนสอบ')
plt.xlabel('ชั่วโมงที่ฝึกเขียนโค้ด (ชม.)')
plt.ylabel('คะแนนสอบ')

# แสดงกราฟ
plt.grid(True)
plt.show()

จากโค้ดนี้ plt.scatter() จะรับค่า X และ Y มาวาดเป็นจุด พารามิเตอร์ alpha ช่วยปรับความโปร่งแสงของจุด ซึ่งมีประโยชน์มากเมื่อข้อมูลมีเยอะและทับซ้อนกัน

เพิ่มเส้นแนวโน้ม (Trendline) ด้วย Seaborn

ถ้าต้องการให้กราฟดูเป็นมืออาชีพและเห็นแนวโน้มชัดเจนขึ้น seaborn เป็นตัวเลือกที่ดีกว่า เพราะมีฟังก์ชันที่ลากเส้นถดถอย (Regression Line) ให้อัตโนมัติ

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd

# สร้าง DataFrame
data = pd.DataFrame({
    'Hours': hours_practiced,
    'Scores': exam_scores
})

# ใช้ regplot เพื่อวาด Scatter Plot พร้อมเส้นแนวโน้ม
sns.regplot(x='Hours', y='Scores', data=data, scatter_kws={'color': 'blue'}, line_kws={'color': 'red'})

plt.title('Scatter Plot พร้อมเส้นแนวโน้ม')
plt.show()

เพียงไม่กี่บรรทัด คุณก็จะได้กราฟที่มีจุดกระจายพร้อมเส้นตรงสีแดงลากผ่านกลางจุด เพื่อยืนยันว่ามีความสัมพันธ์เชิงบวกอย่างชัดเจน

ข้อควรระวังเมื่อใช้ Scatter Plot

แม้จะมีประโยชน์ แต่ Scatter Plot ก็มีข้อจำกัดที่คุณต้องรู้:

  • ปัญหา Overplotting: หากข้อมูลมีหลายหมื่นจุด จุดจะทับซ้อนกันจนกลายเป็นก้อนสีดำทึบ ทำให้มองไม่เห็นความหนาแน่น วิธีแก้คือการใช้ alpha ให้จุดโปร่งแสง หรือใช้กราฟประเภท Hexbin Plot แทน
  • แกนที่หลอกลวง: การไม่เริ่มต้นแกนที่ศูนย์ (0) อาจทำให้ความสัมพันธ์ดูรุนแรงกว่าความเป็นจริง ควรระวังในการกำหนดขอบเขตของแกน X และ Y
  • ไม่เหมาะกับข้อมูลหมวดหมู่: หากตัวแปรของคุณเป็นหมวดหมู่ เช่น สี หรือ ยี่ห้อ การใช้ Scatter Plot อาจไม่ได้ให้ข้อมูลที่เป็นประโยชน์ ควรใช้ Bar Chart หรือ Box Plot แทน

สรุป: Scatter Plot คือเครื่องมือสื่อสารข้อมูล

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

ในฐานะนักพัฒนา ไม่ว่าคุณจะกำลังวิเคราะห์ Log ของเซิร์ฟเวอร์ หรือทำนายพฤติกรรมผู้ใช้ การมี Scatter Plot ไว้ในคลังอาวุธของคุณ ย่อมเป็นสิ่งที่เหนือกว่าการดูตัวเลขใน Console อย่างแน่นอน

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

แล้วคุณล่ะ เคยพบเจอความสัมพันธ์แบบไหนจาก Scatter Plot ที่ทำให้คุณต้องทึ่งหรือเปลี่ยนความคิดในการทำงานบ้างไหม? มาแชร์กันได้ในคอมเมนต์เลยครับ

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

พบข้อมูลที่ไม่ถูกต้องหรือคลาดเคลื่อน?เข้าสู่ระบบเพื่อทักท้วง
บทความนี้เป็นอย่างไร?

ยังไม่มีความคิดเห็น — มาเป็นคนแรกกันเถอะ!