แนะนำตัว..
ประเภทแผนภูมิที่คุณชื่นชอบที่สุดคืออะไร? หากคุณถามคำถามนี้กับผู้บริหารหรือนักวิเคราะห์ธุรกิจ คำตอบในทันทีคือแผนภูมิวงกลม! เป็นวิธีการแสดงเปอร์เซ็นต์ที่ใช้กันทั่วไป
ทำอย่างไร..
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')
6.แสดงกราฟ
plt.show()
7. มีพารามิเตอร์ที่น่าสนใจสองสามอย่างที่จะเล่นกับวงกลม/วินาที startangle - หมุนจุดเริ่มต้นของเวดจ์/พาย
ทวนเข็มนาฬิกา - ทิศทางที่คุณต้องการตั้งค่า ค่าเริ่มต้นคือ True
plt.pie(titles, labels=players, startangle=60, counterclock=False,autopct='%1.1f%%')plt.show()
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}
([, , , ,
สุดท้ายก็รวมทุกอย่างเข้าด้วยกัน
ตัวอย่าง
# 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()