Box plot และ violin plot
เปรียบเทียบการกระจายของหลายกลุ่มด้วย ax.boxplot และ ax.violinplot
บทนำ
กราฟแท่งของค่าเฉลี่ยซ่อนไว้ว่าค่ากระจายตัวมากแค่ไหน box plot แสดงค่ามัธยฐาน ครึ่งกลางของข้อมูล (กล่อง) ช่วงปกติ (หนวด) และค่าผิดปกติ (outlier) เป็นจุด ส่วน violin plot แสดงรูปร่างทั้งหมดของแต่ละกลุ่ม
แต่ละลิสต์ใน scores กลายเป็นกล่องหนึ่งกล่อง เส้นในกล่องคือค่ามัธยฐาน กล่องครอบคลุมคะแนน 50% ตรงกลาง และหนวดยื่นไปถึงค่าที่ไกลที่สุดที่ไม่ใช่ค่าผิดปกติ ห้อง B มีกล่องเล็กกว่ามาก แปลว่าคะแนนใกล้เคียงกัน set_xticks ตั้งชื่อกล่องที่อยู่ที่ x = 1, 2 และ 3 ส่วน ax.violinplot(scores) จะวาดกลุ่มเดียวกันเป็นรูปไวโอลิน
ตัวแสดงภาพแบบโต้ตอบ
สลับระหว่าง box plot กับ violin plot แสดงคะแนนทุกค่าเป็นจุด และเปลี่ยนการกระจายของห้อง C
ตัวอย่าง Matplotlib ที่รันได้
Matplotlib
main.py
import matplotlib.pyplot as plt
import numpy as np
rng = np.random.default_rng(5)
scores = [rng.normal(70, 8, 80), rng.normal(75, 4, 80), rng.normal(65, 12, 80)]
fig, ax = plt.subplots(figsize=(7, 4))
ax.boxplot(scores)
ax.set_xticks([1, 2, 3], ["Class A", "Class B", "Class C"])
ax.set_ylabel("Score")
ax.set_title("Test scores by class")
plt.show()
