Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Python Pandas - วาด Boxplot ทับ Swarm Plot ด้วย Seaborn แสดงจุดข้อมูลบนกล่อง

การรวม Box Plot** (แสดงการกระจายตัว: median, quartiles, outliers) และ Swarm Plot** (แสดงจุดข้อมูลจริงทุกจุด ไม่ทับซ้อน) จะได้ภาพรวมที่สมบูรณ์ที่สุด: ดูทั้งสรุปสถิติและการกระจายตัวของข้อมูลดิบ

ขั้นตอนการทำงาน

1. นำเข้าไลบรารี

import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt

2. โหลดข้อมูล Cricketers.csv

dataFrame = pd.read_csv(r"C:\Users\amit_\Desktop\Cricketers.csv")

3. วาด Box Plot ก่อน แล้วทับ Swarm Plot

# Box plot
sns.boxplot(x='Role', y='Age', data=dataFrame)

# Swarm plot ทับบน box plot
sns.swarmplot(x="Role", y="Age", data=dataFrame, color=".25")

โค้ดตัวอย่างสมบูรณ์

import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt

# โหลดข้อมูล
dataFrame = pd.read_csv(r"C:\Users\amit_\Desktop\Cricketers.csv")

# วาด Box plot
sns.boxplot(x='Role', y='Age', data=dataFrame)

# วาด Swarm plot ทับบน Box plot (สีเทาเข้ม .25)
sns.swarmplot(x="Role", y="Age", data=dataFrame, color=".25")

# แสดงกราฟ
plt.show()

ผลลัพธ์

กราฟแสดงกล่อง (box) แทนการกระจายอายุของแต่ละตำแหน่ง (Role: Batsman, Bowler, All-rounder) พร้อมจุดข้อมูลจริง (swarm) ทับอยู่บนกล่อง สีเทาเข้ม

Python Pandas - วาด Boxplot ทับ Swarm Plot ด้วย Seaborn แสดงจุดข้อมูลบนกล่อง

คำอธิบาย

  • Box Plot: แสดง median (เส้นกลาง), Q1-Q3 (กล่อง), whiskers (หนวด), outliers (จุดนอกกล่อง)
  • Swarm Plot: จัดจุดข้อมูลไม่ให้ทับกัน แสดงความหนาแน่นของข้อมูลจริง
  • color=".25" = ระดับสีเทา 25% (0=ดำ, 1=ขาว)
  • ลำดับสำคัญ: วาด boxplot ก่อน แล้วค่อย swarmplot ทับบน

ตัวเลือกเพิ่มเติม

# ปรับขนาดจุด swarm
sns.swarmplot(x="Role", y="Age", data=dataFrame, color=".25", size=3)

# ใช้ palette สีสวยงาม
sns.swarmplot(x="Role", y="Age", data=dataFrame, palette="Set2")

# ไม่แสดง outliers ใน boxplot (เพราะมี swarm แล้ว)
sns.boxplot(x='Role', y='Age', data=dataFrame, showfliers=False)