ใช้ sns.boxplot() สร้าง Boxplot แสดงการกระจายข้อมูล (Median, Quartiles, Outliers)
ขั้นตอน
- ตั้งค่าขนาด Figure
- เตรียมข้อมูล Xticks
- สร้าง Boxplot ด้วย Seaborn
- ตั้งค่า Xticks และ Labels พร้อม Rotation
- แสดงผล
ตัวอย่างโค้ด
import seaborn as sns
from matplotlib import pyplot as plt
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
xticks = [1, 4, 5, 2, 3]
# สร้าง Boxplot
ax = sns.boxplot(xticks)
# ตั้งค่า Tick Positions และ Labels
ax.set_xticks(xticks)
ax.set_xticklabels(["one", "two", "three", "four", "five"], rotation=45)
plt.show()
Boxplot แบบมีหลายกลุ่ม (Grouped)
import pandas as pd
# ข้อมูลตัวอย่าง
df = pd.DataFrame({
'category': ['A', 'A', 'B', 'B', 'C', 'C'] * 10,
'group': ['X', 'Y'] * 30,
'value': np.random.randn(60)
})
sns.boxplot(data=df, x='category', y='value', hue='group')
plt.show()
Boxplot ด้วย Matplotlib ตรงๆ
# ข้อมูลหลายชุด
data = [np.random.normal(0, std, 100) for std in range(1, 4)]
fig, ax = plt.subplots()
bp = ax.boxplot(data, labels=['Std=1', 'Std=2', 'Std=3'], patch_artist=True)
# ปรับสี
colors = ['pink', 'lightblue', 'lightgreen']
for patch, color in zip(bp['boxes'], colors):
patch.set_facecolor(color)
องค์ประกอบของ Boxplot
- Box: Q1 ถึง Q3 (IQR)
- Median Line: ค่ามัธยฐาน (Q2)
- Whiskers: ขยายถึง 1.5*IQR
- Outliers: จุดนอก Whiskers
ผลลัพธ์
Boxplot 5 กล่อง แสดงการกระจายของข้อมูล xticks พร้อม Label หมุน 45 องศา