บทนำ
Pie chart เป็นชาร์ตยอดนิยมสำหรับแสดงเปอร์เซ็นต์ ใน Matplotlib สามารถเน้นชิ้นหนึ่ง (explode) และปรับแต่งการแสดงผลได้หลากหลาย
ขั้นตอน
- ติดตั้ง matplotlib:
pip install matplotlib - นำเข้า:
import matplotlib.pyplot as plt - เตรียมข้อมูล:
tennis_stats = (('Federer', 20), ('Nadal', 20), ('Djokovic', 17), ('Murray', 3)) titles = [t for _, t in tennis_stats] players = [p for p, _ in tennis_stats] - วาด Pie chart พื้นฐาน:
plt.pie(titles, labels=players, autopct='%1.1f%%') plt.gca().axis('equal') plt.show() - ปรับพารามิเตอร์น่าสนใจ:
startangle: หมุนจุดเริ่มต้นของชิ้นcounterclock: ทิศทาง (default True)explode: แยกชิ้นที่ต้องการเน้น (tuple ความห่างจากศูนย์กลาง)
- แสดงค่าจริงแทนเปอร์เซ็นต์: เขียนฟังก์ชัน
format_valuesใช้ dictionary map เปอร์เซ็นต์ -> ค่าจริง ใส่ในautopct
โค้ดเต็ม
import matplotlib.pyplot as plt
from matplotlib.ticker import FuncFormatter
tennis_stats = (('Federer', 20), ('Nadal', 20), ('Djokovic', 17), ('Murray', 3))
titles = [t for _, t in tennis_stats]
players = [p for p, _ in tennis_stats]
total = sum(titles)
values = {int(100 * t / total): t for _, t in tennis_stats}
def format_values(percent, **kwargs):
value = values[int(percent)]
return '{}'.format(value)
explode = (0, 0, 0.1, 0.0) # เน้นชิ้นที่ 3 (Djokovic)
plt.pie(titles, labels=players, explode=explode, autopct=format_values)
plt.show()