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

Python Pandas - จัดกลุ่ม Swarm Plot ด้วยตัวแปรหมวดหมู่สองตัว (hue) ใน Seaborn

พารามิเตอร์ hue ใน sns.swarmplot() ใช้จัดกลุ่มจุดข้อมูล (swarms) ตาม ตัวแปรหมวดหมู่ที่สอง** ภายในกลุ่มหลัก (x หรือ y) สร้างการเปรียบเทียบระหว่างกลุ่มย่อยได้ชัดเจน

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

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

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

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

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

3. วาด Swarm Plot กลุ่มตาม Role และ hue ตาม Academy

sns.swarmplot(x="Role", y="Matches", hue="Academy", data=dataFrame)

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

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

dataFrame = pd.read_csv(r"C:\Users\amit_\Desktop\Cricketers2.csv")
sns.set_theme(style="whitegrid")

# Swarm plot: x=Role, y=Matches, hue=Academy
sns.swarmplot(x="Role", y="Matches", hue="Academy", data=dataFrame)

plt.show()

ผลลัพธ์

แกน X = Role (Batsman, Bowler, All-rounder) แกน Y = Matches จุดข้อมูลแยกสีตาม Academy (Victoria, Western Australia, South Australia) อยู่ในแต่ละ Role

Python Pandas - จัดกลุ่ม Swarm Plot ด้วยตัวแปรหมวดหมู่สองตัว (hue) ใน Seaborn

การทำงานของ hue ใน Swarm Plot

  • สร้าง "dodged" swarms: จุดแต่ละสีข้างกันในกลุ่ม Role เดียวกัน
  • Legend จะแสดงอัตโนมัติ
  • รองรับ hue_order ควบคุมลำดับสี
  • รองรับ palette ปรับสี

ตัวอย่างปรับแต่ง

# ควบคุมลำดับ hue
sns.swarmplot(
    x="Role", y="Matches", hue="Academy",
    hue_order=["Victoria", "Western Australia", "South Australia"],
    data=dataFrame
)

# ปรับสี palette
sns.swarmplot(x="Role", y="Matches", hue="Academy", data=dataFrame, palette="Set1")

# ปรับขนาดจุด และ dodge
sns.swarmplot(x="Role", y="Matches", hue="Academy", data=dataFrame, size=6, dodge=True)

# ไม่แยก dodge (จุดทับซ้อน)
sns.swarmplot(x="Role", y="Matches", hue="Academy", data=dataFrame, dodge=False)

Swarm Plot vs Strip Plot

คุณสมบัติSwarm PlotStrip Plot
จุดทับกันไม่ทับ (non-overlapping)ทับกัน (jitter)
ความเร็วช้ากว่า (O(n²))เร็วมาก
ข้อมูลใหญ่ไม่เหมาะ (>100/group)เหมาะ
ดู densityได้ชัดเจนได้ประมาณ (กับ alpha)

เมื่อไหร่ใช้ Swarm + Hue

  • เปรียบเทียบการกระจายของกลุ่มย่อย (Academy) ภายในกลุ่มหลัก (Role)
  • ข้อมูลไม่ใหญ่เกินไป
  • ต้องการเห็นจุดข้อมูลจริงทุกจุด