การรวม Box Plot** (สรุปสถิติ) และ Swarm Plot** (จุดข้อมูลจริง) ให้ภาพลักษณะข้อมูลครบถ้วน วาด Box Plot ก่อน แล้วทับ Swarm Plot ด้วยพารามิเตอร์ whis=np.inf เพื่อให้ whiskers ครอบจุดข้อมูลทั้งหมด
ขั้นตอนการทำงาน
1. นำเข้าไลบรารี
import seaborn as sns
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
2. โหลดข้อมูล Cricketers2.csv
dataFrame = pd.read_csv(r"C:\Users\amit_\Desktop\Cricketers2.csv")
3. ตั้ง theme และวาด Box + Swarm
sns.set_theme(style="whitegrid")
# Box plot: whis=np.inf ทำให้ whiskers ยื่นถึงข้อมูลสุดท้าย (ไม่มี outliers)
sns.boxplot(x="Matches", y="Role", data=dataFrame, whis=np.inf)
# Swarm plot ทับบน box plot
sns.swarmplot(x="Matches", y="Role", data=dataFrame, color=".3")
โค้ดตัวอย่างสมบูรณ์
import seaborn as sns
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
dataFrame = pd.read_csv(r"C:\Users\amit_\Desktop\Cricketers2.csv")
sns.set_theme(style="whitegrid")
# Box plot พร้อม whiskers ครอบทั้งข้อมูล
sns.boxplot(x="Matches", y="Role", data=dataFrame, whis=np.inf)
# Swarm plot ทับบน box plot สีเทา .3
sns.swarmplot(x="Matches", y="Role", data=dataFrame, color=".3")
plt.show()
ผลลัพธ์
กราฟแนวนอน: แกน Y = Role, แกน X = Matches กล่อง (box) ครอบข้อมูลทั้งหมด (whis=np.inf) จุดข้อมูล (swarm) กระจายอยู่บนกล่อง

คำอธิบาย whis=np.inf
- ค่าเริ่มต้น
whis=1.5→ whiskers ยื่นถึง 1.5×IQR จุดนอกเหลือเป็น outliers whis=np.inf→ whiskers ยื่นถึง min/max ของข้อมูล ไม่มี outliers- เหมาะเมื่อต้องการให้ Box Plot ครอบข้อมูลทั้งหมด ก่อนทับ Swarm Plot
ตัวเลือกการจัดสไตล์
# Swarm plot สีตาม hue
sns.swarmplot(x="Matches", y="Role", hue="Academy", data=dataFrame, palette="Set2")
# ปรับขนาดจุด
sns.swarmplot(x="Matches", y="Role", data=dataFrame, color=".3", size=5)
# Box plot สีอ่อน Swarm plot สีเข้ม
sns.boxplot(x="Matches", y="Role", data=dataFrame, whis=np.inf, color="lightblue")
sns.swarmplot(x="Matches", y="Role", data=dataFrame, color="darkblue")
เมื่อไหร่ใช้ Box+Swarm
- ข้อมูลกลุ่มเล็ก-ปานกลาง (<100 points/group) → Swarm แสดงจุดหมดได้
- ข้อมูลใหญ่ → ใช้
stripplot()(jitter) แทน Swarm - ต้องการดูทั้งสรุปสถิติและการกระจายจุดจริง