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

จะพล็อตแผนภูมิวงกลมด้วยพายเดียวที่เน้นด้วย Python Matplotlib ได้อย่างไร


แนะนำตัว..

ประเภทแผนภูมิที่คุณชื่นชอบที่สุดคืออะไร? หากคุณถามคำถามนี้กับผู้บริหารหรือนักวิเคราะห์ธุรกิจ คำตอบในทันทีคือแผนภูมิวงกลม! เป็นวิธีการแสดงเปอร์เซ็นต์ที่ใช้กันทั่วไป

ทำอย่างไร..

1.ติดตั้ง matplotlib โดยทำตามคำสั่ง

pip ติดตั้ง matplotlib

2.นำเข้า matplotlib

นำเข้า matplotlib.pyplot เป็น plt

3.เตรียมข้อมูลชั่วคราว

tennis_stats =(('Federer', 20),('Nadal', 20),('Djokovic', 17),('Murray', 3),)

4.ขั้นตอนต่อไปคือการจัดเตรียมข้อมูล

titles =[title for player, title in tennis_stats]players =[player for player, title in tennis_stats]

5.สร้างแผนภูมิวงกลมโดยมีค่าเป็นชื่อและป้ายกำกับเป็นชื่อผู้เล่น

พารามิเตอร์ autopct - เพื่อจัดรูปแบบค่าเพื่อให้แสดงเป็นเปอร์เซ็นต์เป็นทศนิยมเดียว axis('equals') - เพื่อให้แน่ใจว่าแผนภูมิวงกลมจะมีลักษณะเป็นวงกลม .show - เพื่อแสดงกราฟผลลัพธ์

หมายเหตุ- การดำเนินการ .show จะบล็อกการทำงานของโปรแกรม โปรแกรมจะกลับมาทำงานต่อเมื่อคุณปิดหน้าต่าง

plt.pie(ชื่อ, labels=players, autopct='%1.1f%%')plt.gca().axis('equal')


<ก่อน>(-1.1000000175619362,1.1000000072592333,-1.1090350248729983,1.100430248887797)

จะพล็อตแผนภูมิวงกลมด้วยพายเดียวที่เน้นด้วย Python Matplotlib ได้อย่างไร

6.แสดงกราฟ

plt.show()

7. มีพารามิเตอร์ที่น่าสนใจสองสามอย่างที่จะเล่นกับวงกลม/วินาที startangle - หมุนจุดเริ่มต้นของเวดจ์/พาย
ทวนเข็มนาฬิกา - ทิศทางที่คุณต้องการตั้งค่า ค่าเริ่มต้นคือ True

plt.pie(titles, labels=players, startangle=60, counterclock=False,autopct='%1.1f%%')plt.show()

จะพล็อตแผนภูมิวงกลมด้วยพายเดียวที่เน้นด้วย Python Matplotlib ได้อย่างไร

8. สำหรับบางคนเช่นฉัน เปอร์เซ็นต์ไม่มีความหมายอะไรเลย โปรดจำไว้ว่ากราฟผลลัพธ์จะถูกส่งไปยังผู้ที่ไม่มีเงื่อนงำเกี่ยวกับค่าที่ซ่อนอยู่ลึกลงไปในโค้ดของคุณ ดังนั้นแทนที่จะใช้เปอร์เซ็นต์ ซึ่งชัดเจนในตัวเองจากวิธีที่แบ่งพาย เราสามารถแสดงชื่อจริงได้ ?

นั่นค่อนข้างยุ่งยากเพราะคุณต้องเขียนฟังก์ชันแบบกำหนดเอง ดูรายละเอียดด้านล่างได้เลย

ฉันจะสร้างฟังก์ชันที่กำหนดเอง - format_values ​​เพื่อสร้างพจนานุกรมที่มีคีย์เป็นเปอร์เซ็นต์ เพื่อให้เราสามารถดึงค่าที่อ้างอิงได้

ตัวอย่าง

จาก matplotlib.ticker นำเข้า FuncFormattertotal =sum(title for player, title in tennis_stats)print(total)values ​​={int(100 * title / total):title for player, title in tennis_stats}print(values)def format_values (เปอร์เซ็นต์ **kwargs):value =ค่า[int(percent)]return '{}'.format(value)# ระเบิดเพื่อแยก pie/wedges.explode =(0, 0, 0.1, 0.0)plt.pie (ชื่อ, ป้ายกำกับ =ผู้เล่น, ระเบิด=ระเบิด, autopct=format_values)plt.show()# ยิ่งค่ามากเท่าไหร่ก็ยิ่งถูกแยกออกมากเท่านั้น. ระเบิด =(0.3, 0.2, 0.0, 0.0) plt.pie(ชื่อเรื่อง, labels=ผู้เล่น, ระเบิด=ระเบิด, autopct=format_values)


60{33:20, 28:17, 5:3}

จะพล็อตแผนภูมิวงกลมด้วยพายเดียวที่เน้นด้วย Python Matplotlib ได้อย่างไร

([,,,, 

จะพล็อตแผนภูมิวงกลมด้วยพายเดียวที่เน้นด้วย Python Matplotlib ได้อย่างไร

สุดท้ายก็รวมทุกอย่างเข้าด้วยกัน

ตัวอย่าง

# importsimport matplotlib.pyplot เป็น pltfrom matplotlib.ticker นำเข้า FuncFormatter# prepare datatennis_stats =(('Federer', 20),('Nadal', 20),('Djokovic', 17),('Murray', 3 ),)titles =[ชื่อผู้เล่น ชื่อใน tennis_stats]players =[player for player, title in tennis_stats]total =sum(title for player, title in tennis_stats)values ​​={int(100 * title / total):titles สำหรับผู้เล่น ชื่อใน tennis_stats}# ฟังก์ชั่นกำหนดเอง def format_values(percent, **kwargs):value =values[int(percent)]return '{}'.format(value)# ระเบิดเพื่อแยก pie/wedges.explode =( 0, 0, 0.1, 0.0)plt.pie(ชื่อ, labels=ผู้เล่น, ระเบิด=ระเบิด, autopct=format_values)plt.show()

จะพล็อตแผนภูมิวงกลมด้วยพายเดียวที่เน้นด้วย Python Matplotlib ได้อย่างไร