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

Python Pandas - วาด Swarm Plot ควบคุมลำดับด้วย order parameter ใน Seaborn

พารามิเตอร์ order ใน sns.swarmplot() ใช้ควบคุมลำดับการแสดงหมวดหมู่บนแกน (ควบคุมได้ทั้ง 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 ระบุ order ของ Academy

sns.swarmplot(
    x="Academy",
    y="Matches",
    order=["Victoria", "Western Australia", "South Australia"],
    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 ควบคุมลำดับ Academy
sns.swarmplot(
    x="Academy",
    y="Matches",
    order=["Victoria", "Western Australia", "South Australia"],
    data=dataFrame
)

plt.show()

ผลลัพธ์

Swarm plot แสดงจำนวนแมตช์ (Matches) จัดกลุ่มตามสถาบัน (Academy) ลำดับจากซ้ายไปขวา: Victoria → Western Australia → South Australia

Python Pandas - วาด Swarm Plot ควบคุมลำดับด้วย order parameter ใน Seaborn

การใช้งาน order parameter

สถานการณ์โค้ด
ควบคุมแกน X (categorical)order=["A", "B", "C"]
ควบคุมแกน Y (categorical)order=["A", "B", "C"] (กับ y=...)
ควบคุม hue orderhue_order=["X", "Y", "Z"]
ดึงจากข้อมูล (sorted unique)order=df['cat'].unique()
เรียงตามค่าสถิติorder=df.groupby('cat')['val'].median().sort_values().index

ตัวอย่างขั้นสูง: เรียงตาม Median

# เรียง Academy ตาม median Matches มากไปน้อย
order = dataFrame.groupby('Academy')['Matches'].median().sort_values(ascending=False).index
sns.swarmplot(x="Academy", y="Matches", order=order, data=dataFrame)

ร่วมกับ hue

sns.swarmplot(
    x="Role",
    y="Matches",
    hue="Academy",
    hue_order=["Victoria", "Western Australia", "South Australia"],
    data=dataFrame
)

หมายเหตุ

  • order ต้องเป็น list-like ของค่าที่มีอยู่จริงในข้อมูล
  • ค่าที่ไม่อยู่ใน order จะไม่แสดง (ถ้าต้องการแสดงหมด ใช้ hue_order แทน)
  • ใช้ร่วมกับ dodge=True (default) เมื่อมี hue เพื่อแยกกลุ่มชัดเจน