परिचय..
आपका सबसे पसंदीदा चार्ट प्रकार क्या है? यदि आप यह प्रश्न प्रबंधन या व्यापार विश्लेषक से पूछते हैं, तो तत्काल उत्तर पाई चार्ट है! यह प्रतिशत प्रस्तुत करने का एक बहुत ही सामान्य तरीका है।
इसे कैसे करें..
1. आदेश का पालन करके matplotlib स्थापित करें।
pip install matplotlib
2.आयात matplotlib
import matplotlib.pyplot as 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 पैरामीटर - मान को प्रारूपित करने के लिए यह इसे एक दशमलव स्थान पर प्रतिशत के रूप में प्रदर्शित करता है। अक्ष ('बराबर') - यह सुनिश्चित करने के लिए कि पाई चार्ट गोल दिखाई देगा। .शो - परिणामी ग्राफ प्रदर्शित करने के लिए।
नोट- निष्पादन .show कार्यक्रम के निष्पादन को अवरुद्ध करता है। जब आप विंडो बंद करेंगे तो प्रोग्राम फिर से शुरू हो जाएगा।
plt.pie(titles, labels=players, autopct='%1.1f%%')
plt.gca().axis('equal')
(-1.1000000175619362, 1.1000000072592333, -1.1090350248729983, 1.100430247887797)

6.ग्राफ दिखाएं।
plt.show()
7. पाई/एस के साथ खेलने के लिए कुछ दिलचस्प पैरामीटर हैं। startangle - वेजेस/पाई की शुरुआत को घुमाते हुए।
काउंटरक्लॉक - जिस दिशा में आप सेटअप करना चाहते हैं, डिफ़ॉल्ट सही है।
plt.pie(titles, labels=players, startangle=60, counterclock=False,autopct='%1.1f%%') plt.show()

8.अब मेरे जैसे कुछ लोगों के लिए प्रतिशत का कोई मतलब नहीं है। याद रखें कि आउटपुट ग्राफ किसी ऐसे व्यक्ति को भेजा जाता है, जिसे आपके कोड के अंदर छिपे मूल्यों का कोई सुराग नहीं है। तो प्रतिशत के बजाय, जो स्पष्ट रूप से पाई के विभाजन से स्व-व्याख्यात्मक है, क्या हम वास्तविक शीर्षक दिखा सकते हैं?.
खैर, यह थोड़ा मुश्किल है क्योंकि आपको एक कस्टम फ़ंक्शन लिखने की आवश्यकता है। नीचे देखें।
प्रतिशत के रूप में कुंजी के साथ एक शब्दकोश बनाने के लिए मैं एक कस्टम फ़ंक्शन - format_values बनाउंगा, ताकि हम संदर्भित मान पुनर्प्राप्त कर सकें।
उदाहरण
from matplotlib.ticker import FuncFormatter
total = 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(percent, **kwargs):
value = values[int(percent)]
return '{}'.format(value)
# explode to seperate the pie/wedges.
explode = (0, 0, 0.1, 0.0)
plt.pie(titles, labels=players, explode=explode, autopct=format_values)
plt.show()
# the more the value the more farther it will be seperated.
explode = (0.3, 0.2, 0.0, 0.0)
plt.pie(titles, labels=players, explode=explode, autopct=format_values)
60
{33: 20, 28: 17, 5: 3}

([<matplotlib.patches.Wedge at 0x2279cf8dd00>, <matplotlib.patches.Wedge at 0x2279cf9b1f0>, <matplotlib.patches.Wedge at 0x2279cf9b8b0>, <matplotlib.patches.Wedge at 0x2279cf9bf70>], [Text(0.6999999621611965, 1.2124355871444568, 'Federer'), Text(-1.2999999999999945, -1.2171478395895002e-07, 'Nadal'), Text(0.39420486628845763, -1.0269384223966398, 'Djokovic'), Text(1.086457194390738, -0.17207778693546258, 'Murray')], [Text(0.44999997567505484, 0.7794228774500078, '20'), Text(-0.7999999999999966, -7.490140551320001e-08, '20'), Text(0.2150208361573405, -0.5601482303981671, '17'), Text(0.5926130151222206, -0.09386061105570685, '3')])

अंत में, सब कुछ एक साथ रखना।
उदाहरण
# imports
import matplotlib.pyplot as plt
from matplotlib.ticker import FuncFormatter
# prepare data
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(title for player, title in tennis_stats)
values = {int(100 * title / total): title for player, title in tennis_stats}
# custom function
def format_values(percent, **kwargs):
value = values[int(percent)]
return '{}'.format(value)
# explode to seperate the pie/wedges.
explode = (0, 0, 0.1, 0.0)
plt.pie(titles, labels=players, explode=explode, autopct=format_values)
plt.show()
