การรวม Box Plot** (แสดงการกระจายตัว: median, quartiles, outliers) และ Swarm Plot** (แสดงจุดข้อมูลจริงทุกจุด ไม่ทับซ้อน) จะได้ภาพรวมที่สมบูรณ์ที่สุด: ดูทั้งสรุปสถิติและการกระจายตัวของข้อมูลดิบ
ขั้นตอนการทำงาน
1. นำเข้าไลบรารี
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
2. โหลดข้อมูล Cricketers.csv
dataFrame = pd.read_csv(r"C:\Users\amit_\Desktop\Cricketers.csv")
3. วาด Box Plot ก่อน แล้วทับ Swarm Plot
# Box plot
sns.boxplot(x='Role', y='Age', data=dataFrame)
# Swarm plot ทับบน box plot
sns.swarmplot(x="Role", y="Age", data=dataFrame, color=".25")
โค้ดตัวอย่างสมบูรณ์
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
# โหลดข้อมูล
dataFrame = pd.read_csv(r"C:\Users\amit_\Desktop\Cricketers.csv")
# วาด Box plot
sns.boxplot(x='Role', y='Age', data=dataFrame)
# วาด Swarm plot ทับบน Box plot (สีเทาเข้ม .25)
sns.swarmplot(x="Role", y="Age", data=dataFrame, color=".25")
# แสดงกราฟ
plt.show()
ผลลัพธ์
กราฟแสดงกล่อง (box) แทนการกระจายอายุของแต่ละตำแหน่ง (Role: Batsman, Bowler, All-rounder) พร้อมจุดข้อมูลจริง (swarm) ทับอยู่บนกล่อง สีเทาเข้ม

คำอธิบาย
- Box Plot: แสดง median (เส้นกลาง), Q1-Q3 (กล่อง), whiskers (หนวด), outliers (จุดนอกกล่อง)
- Swarm Plot: จัดจุดข้อมูลไม่ให้ทับกัน แสดงความหนาแน่นของข้อมูลจริง
color=".25"= ระดับสีเทา 25% (0=ดำ, 1=ขาว)- ลำดับสำคัญ: วาด boxplot ก่อน แล้วค่อย swarmplot ทับบน
ตัวเลือกเพิ่มเติม
# ปรับขนาดจุด swarm
sns.swarmplot(x="Role", y="Age", data=dataFrame, color=".25", size=3)
# ใช้ palette สีสวยงาม
sns.swarmplot(x="Role", y="Age", data=dataFrame, palette="Set2")
# ไม่แสดง outliers ใน boxplot (เพราะมี swarm แล้ว)
sns.boxplot(x='Role', y='Age', data=dataFrame, showfliers=False)