Swarmplot จะขยับตำแหน่งของแต่ละจุดเล็กน้อยเพื่อไม่ให้ทับกัน ทำให้เรายังเห็นข้อมูลรายจุดพร้อมๆ กับรูปทรงการกระจายของแต่ละหมวดหมู่
import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset("tips")
fig, ax = plt.subplots(figsize=(6, 4))
sns.swarmplot(data=tips, x="day", y="total_bill", hue="sex", dodge=True, ax=ax)
ax.set_xlabel("วันในสัปดาห์")
ax.set_ylabel("ยอดบิล ($)")
ax.set_title("Swarmplot ของยอดบิลรายวัน")
ax.grid(axis="y", alpha=0.2)
fig.tight_layout()
plt.show()

วิธีอ่าน #
- ความสูงของแถวจุดสื่อความหนาแน่น และยังเห็น outlier เป็นจุดเดี่ยวๆ ชัดเจน
- หากข้อมูลเยอะมาก การจัดตำแหน่งจะช้าลง ควรสุ่มข้อมูลหรือปรับขนาด
size dodge=Trueช่วยแยกคอลัมน์ตามค่าของhueเพื่อเทียบหมวดหมู่ย่อยได้สะดวก