Violin plot = Box plot + Kernel Density Estimation (KDE). Hiển thị cả tóm tắt thống kê (median, quartiles) và hình dạng phân bố mật độ.
- Phần rộng = mật độ cao (nhiều dữ liệu).
- Phần hẹp = mật độ thấp.
- Trung tâm: box plot (median, IQR) hoặc chỉ median + quartiles.
Cú pháp
seaborn.violinplot(x, y, hue, data, ...)
Ví dụ cơ bản
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
my_df = sb.load_dataset('tips')
sb.violinplot(x="day", y="total_bill", data=my_df)
plt.show()
Giải thích
- Mỗi violin = phân bố total_bill trong một ngày.
- Thấy rõ ngày nào có phân bố đối xứng, ngày nào lệch, ngày nào đa峰.
- Box plot bên trong: đường trắng = median, hộp = IQR, râu = 1.5*IQR.
So sánh với Box plot
| Đặc điểm | Box plot | Violin plot |
|---|---|---|
| Hình dạng phân bố | Không thấy | Rõ ràng (KDE) |
| Đa峰 (multimodal) | Không phát hiện | Phát hiện tốt |
| Kích thước mẫu | Không phản ánh | Độ rộng violin ~ sample size |