การสร้าง Pie Chart (แผนภูมิวงกลม) จากข้อมูลใน Pandas DataFrame ด้วย Matplotlib สามารถทำได้อย่างง่ายดายโดยใช้เมธอด plot.pie() ที่สร้างขึ้นมาสำหรับ Pandas โดยเฉพาะ
ขั้นตอนการสร้าง Pie Chart
- ตั้งค่าขนาด Figure และ Padding
- สร้าง DataFrame จากข้อมูลตาราง 2 มิติ
- ตั้งค่า Index เป็นหมวดหมู่ (Categories)
- ใช้
df.plot.pie()พร้อมกำหนดคอลัมน์ค่า (y) และรูปแบบแสดงผล - แสดงผลด้วย
plt.show()
ตัวอย่างโค้ด
import pandas as pd
import matplotlib.pyplot as plt
# ตั้งค่าขนาดและเลย์เอาต์
plt.rcParams["figure.figsize"] = [8, 6]
plt.rcParams["figure.autolayout"] = True
# สร้าง DataFrame
df = pd.DataFrame({
'กิจกรรม': ['นอนหลับ', 'ออกกำลังกาย', 'ทำงาน', 'เรียนรู้', 'พักผ่อน', 'กิน/เดินทาง'],
'ชั่วโมง': [8, 1.5, 9, 3, 1.5, 1]
})
# ตั้งค่า Index และวาด Pie Chart
df.set_index('กิจกรรม').plot.pie(
y='ชั่วโมง',
autopct='%1.1f%%', # แสดงเปอร์เซ็นต์ 1 ตำแหน่งทศนิยม
startangle=90, # เริ่มที่มุม 90 องศา (ด้านบน)
counterclock=False, # เข็มนาฬิกา
legend=False, # ไม่แสดง Legend (มี Label อยู่แล้ว)
colormap='Set3', # ชุดสี
fontsize=12,
title='การแบ่งเวลาในแต่ละวัน (ชั่วโมง)'
)
plt.ylabel('') # ซ่อน label แนวตั้ง
plt.show()
ผลลัพธ์
จะได้ Pie Chart ที่แสดงสัดส่วนเวลาแต่ละกิจกรรมในแต่ละวัน พร้อมเปอร์เซ็นต์และสีสันที่สวยงาม
ตัวเลือกที่น่าสนใจ
- explode: ดึงชิ้นส่วนออกมาเน้น (เช่น
explode=[0.1, 0, 0, 0, 0, 0]) - shadow=True: เพิ่มเงาให้ Pie Chart
- colors: ระบุสีแต่ละชิ้นด้วย List ของสี
- wedgeprops: ปรับขอบ ช่องว่าง รูปทรง (เช่น
wedgeprops={'width': 0.5}ทำ Donut Chart)
ตัวอย่าง Donut Chart
df.set_index('กิจกรรม').plot.pie(
y='ชั่วโมง',
autopct='%1.1f%%',
startangle=90,
wedgeprops={'width': 0.4, 'edgecolor': 'white', 'linewidth': 2},
colormap='tab20',
title='Donut Chart: การแบ่งเวลา'
)
plt.show()