परिचय
पाई चार्ट प्रतिशत दर्शाने का बहुत आम तरीका है। आइए देखें कि Matplotlib में पाई चार्ट कैसे बनाएं और एक स्लाइस को हाइलाइट (explode) कैसे करें।
चरण
- Matplotlib इंस्टॉल करें:
pip install matplotlib - इम्पोर्ट करें:
import matplotlib.pyplot as plt - डेटा तैयार करें:
tennis_stats = (('Federer', 20), ('Nadal', 20), ('Djokovic', 17), ('Murray', 3)) titles = [title for player, title in tennis_stats] players = [player for player, title in tennis_stats] - बेसिक पाई चार्ट:
plt.pie(titles, labels=players, autopct='%1.1f%%') plt.gca().axis('equal') # गोल आकार के लिए plt.show() startangleऔरcounterclockसे घुमाएं:plt.pie(titles, labels=players, startangle=60, counterclock=False, autopct='%1.1f%%') plt.show()- एक स्लाइस को हाइलाइट (explode) करें:
explode = (0, 0, 0.1, 0) # तीसरा स्लाइस (Djokovic) अलग करें plt.pie(titles, labels=players, explode=explode, autopct='%1.1f%%') plt.show() - प्रतिशत के बजाय वास्तविक मान दिखाने के लिए कस्टम फॉर्मेटर:
from matplotlib.ticker import FuncFormatter total = sum(titles) values = {int(100 * t / total): t for t in titles} def format_values(percent, **kwargs): return str(values[int(percent)]) explode = (0, 0, 0.1, 0) plt.pie(titles, labels=players, explode=explode, autopct=format_values) plt.show()
पूर्ण कोड
import matplotlib.pyplot as plt
from matplotlib.ticker import FuncFormatter
tennis_stats = (('Federer', 20), ('Nadal', 20), ('Djokovic', 17), ('Murray', 3))
titles = [title for player, title in tennis_stats]
players = [player for player, title in tennis_stats]
total = sum(titles)
values = {int(100 * t / total): t for t in titles}
def format_values(percent, **kwargs):
return str(values[int(percent)])
explode = (0, 0, 0.1, 0)
plt.pie(titles, labels=players, explode=explode, autopct=format_values)
plt.title('ग्रैंड स्लैम खिताब')
plt.show()
मुख्य पैरामीटर
explode: टपल, प्रत्येक स्लाइस के लिए केंद्र से दूरी।autopct: स्ट्रिंग फॉर्मेट या फंक्शन, स्लाइस पर लेबल के लिए।startangle: शुरुआती कोण (डिग्री)।counterclock: दिशा (डिफ़ॉल्ट True = वामावर्त)।colors: रंगों की सूची।shadow: छाया जोड़ने के लिए True।