ไวโอลินพล็อตผสมข้อดีของ boxplot กับ KDE ทำให้เห็นทั้งรูปทรงของการกระจายและค่ากลางในกราฟเดียว
import seaborn as sns
import matplotlib.pyplot as plt
penguins = sns.load_dataset("penguins").dropna(subset=["bill_length_mm", "species"])
fig, ax = plt.subplots(figsize=(6, 4))
sns.violinplot(data=penguins, x="species", y="bill_length_mm", palette="Set3", ax=ax)
ax.set_xlabel("สายพันธุ์เพนกวิน")
ax.set_ylabel("ความยาวจะงอยปาก (มม.)")
ax.set_title("ไวโอลินพล็อตความยาวจะงอยปากตามสายพันธุ์")
ax.grid(axis="y", alpha=0.2)
fig.tight_layout()
plt.show()

วิธีอ่าน #
- ส่วนที่กว้างแสดงว่ามีข้อมูลหนาแน่น ส่วนแคบบอกว่ามีข้อมูลน้อย
- เส้นกลางและจุดในตัวไวโอลินระบุค่ามัธยฐาน/ควอร์ไทล์ ทำให้ตีความคล้าย boxplot
- เมื่อมีหลายหมวด ให้สลับกราฟเป็นแนวนอนหรือใช้โทนสีจำกัดเพื่อให้อ่านง่าย