मुख्य सामग्री पर जाएँ

Plotly के साथ हिस्टोग्राम कैसे बनाएं

Plotly डेटा विज़ुअलाइज़ेशन लाइब्रेरी का उपयोग करके Python में हिस्टोग्राम लागू करना सीखें।
· 12 मि॰ पढ़ें

AI के साथ खोजें

हिस्टोग्राम डेटा बिंदुओं के ग्राफ़िकल प्रदर्शन हैं जिन्हें निर्धारित रेंजों में व्यवस्थित किया जाता है। हम इन्हें आम तौर पर सांख्यिकी में देखते हैं, जहाँ किसी विशेष प्रकार के वैरिएबल की एक निश्चित रेंज में आने वाली मात्रा को दिखाने के लिए इनका उपयोग किया जाता है। उदाहरण के लिए, आपके पुराने गणित के शिक्षक ने आपकी कक्षा के सभी लोगों द्वारा प्राप्त अंकों की संख्या को दर्शाने के लिए एक हिस्टोग्राम का उपयोग किया होगा। 

अंकों के वितरण को दर्शाता हिस्टोग्राम

चित्र 1: एक उदाहरण हिस्टोग्राम जो एक कक्षा के अंकों का वितरण दिखाता है। 

[स्रोत: Matplotlib के साथ उदाहरण हिस्टोग्राम] 

विभिन्न ऊँचाइयों की उनकी विशिष्ट पट्टियाँ बार चार्ट जैसी लगती हैं, सिवाय इसके कि हिस्टोग्राम का उपयोग श्रेणीबद्ध डेटा के बजाय मात्रात्मक डेटा को विज़ुअलाइज़ करने के लिए किया जाता है — जो बार चार्ट के मामले में होता है। 

आम तौर पर, हिस्टोग्राम में विज़ुअलाइज़ किया गया संख्यात्मक डेटा निरंतर (continuous) होता है, यानी इनके अनंत मान हो सकते हैं। निरंतर वैरिएबल के मानों को सीधे प्लॉट करना प्रायः व्यावहारिक नहीं होता। हिस्टोग्राम इस समस्या को कई डेटा बिंदुओं को तार्किक रेंजों (जिन्हें बिन कहा जाता है) में समूहित करके हल करते हैं और उन्हें विज़ुअलाइज़ करने देते हैं। 

इस ट्यूटोरियल में, हम Python में Plotly डेटा विज़ुअलाइज़ेशन लाइब्रेरी का उपयोग करके हिस्टोग्राम कैसे लागू करें, यह कवर करेंगे। हम आपके Plotly हिस्टोग्राम को कस्टमाइज़ करने के अलग-अलग तरीकों पर भी बात करेंगे और यह भी कि डेटा विज़ुअलाइज़ेशन शुरू में ही इतना महत्वपूर्ण क्यों है। 

इस ट्यूटोरियल के कोड के साथ चलने के लिए यह DataLab वर्कबुक देखें। 

डेटा विश्लेषण में डेटा विज़ुअलाइज़ेशन का महत्व

कोई भी व्यवसाय यह दावा नहीं कर सकता कि अपने डेटा को बेहतर ढंग से समझने से उसे लाभ नहीं होगा। डेटा विश्लेषण की भूमिका व्यवसायों को उनके प्रदर्शन को अनुकूलित करने और उनके निचले स्तर (bottom line) को बेहतर बनाने में मदद करना है; यह विज्ञान जहाँ भी डेटा मौजूद है, हर क्षेत्र तक फैलता है क्योंकि अंतर्दृष्टि को आम तौर पर बढ़त माना जाता है।   

डेटा विज़ुअलाइज़ेशन वे ग्राफ़िकल प्रस्तुतिकरण हैं जिनका उपयोग विश्लेषक सूचना और डेटा को प्रदर्शित करने के लिए करते हैं। इसका उद्देश्य डेटा का सार इस तरह प्रस्तुत करना है कि वह आसानी से समझ में आए और पाठकों के लिए डेटा से निकले महत्वपूर्ण सबक को उजागर करे। 

दूसरे शब्दों में, व्यवसाय डेटा विज़ुअलाइज़ेशन का उपयोग तेजी से डेटा रुझानों की पहचान करने में सहायता हेतु करते हैं, जो अन्यथा दृश्य सहायता के बिना कठिन हो सकता है। ग्राफ़िकल प्रस्तुतिकरण सूचना संप्रेषित करना आसान, सार्वभौमिक, तेज़ और प्रभावी बनाते हैं। 

Plotly का परिचय

Plotly एक इंटरएक्टिव, ओपन-सोर्स डेटा विज़ुअलाइज़ेशन लाइब्रेरी है जो Python और R के लिए है और JavaScript में लिखी गई है। इस लेख के लिए, हम Plotly Python पर ध्यान केंद्रित करेंगे, जिसे कभी-कभी उसके JavaScript समकक्ष से अलग पहचानने के लिए “plotly.py” कहा जाता है। 

सुझाव: Plotly से परिचित होने के लिए Introduction to data visualization with Plotly in Python या Interactive data visualization with Plotly in R कोर्स करें।   

Plotly के कई उपयोगकर्ता अक्सर कहते हैं कि वे लाइब्रेरी की आधुनिक सौंदर्यशास्त्र से शुरू में “मोहित” हो गए, जिन्हें कहानीकार बहुत आसानी से लागू कर पाते हैं। Plotly Python उपयोगकर्ताओं को आकर्षक, इंटरएक्टिव वेब-आधारित विज़ुअलाइज़ेशन बनाने की अनुमति देता है जिन्हें: 

  • Jupyter नोटबुक्स में प्रदर्शित किया जा सकता है, 
  • स्टैंडअलोन HTML फ़ाइलों के रूप में सहेजा जा सकता है, 
  • Dash का उपयोग करके शुद्ध Python-निर्मित वेब अनुप्रयोगों के हिस्से के रूप में सर्व किया जा सकता है।

Plotly का एक और आकर्षण उपलब्ध चार्ट प्रकारों की विशाल रेंज है। लाइब्रेरी 40 से अधिक यूनिक चार्ट्स का समर्थन करती है जो आँकड़े, वित्त, भूगोल, विज्ञान और 3-आयामी चार्ट सहित विभिन्न उपयोग मामलों में फैले हुए हैं। 

Kaleido — एक इमेज एक्सपोर्ट यूटिलिटी — के साथ लाइब्रेरी के गहरे एकीकरण के कारण Plotly के साथ बनाए गए विज़ुअलाइज़ेशन को एक्सपोर्ट करना आसान है। डेस्कटॉप एडिटर्स (जैसे Spyder, PyCharm, आदि) और स्थिर दस्तावेज़ प्रकाशित करना (जैसे Jupyter नोटबुक्स को PDF फ़ॉर्मेट में एक्सपोर्ट करना) सहित गैर-वेब संदर्भों के लिए भी व्यापक समर्थन है। 

plotly.py को इंस्टॉल करना काफ़ी सरल है; इसे pip का उपयोग करके इंस्टॉल किया जा सकता है: 

pip install plotly>=5.11.0, <5.12.0

या Conda का उपयोग करके: 

conda install -c plotly plotly>=5.11.0, <5.12.0

ध्यान दें: अलग-अलग प्रोजेक्ट्स की निर्भरताएँ अलग रखने के लिए लाइब्रेरीज़ को वर्चुअल एनवायरनमेंट में इंस्टॉल करना अनुशंसित है। आप DataLab वर्कबुक — क्लाउड में Python और R डेटा साइंस IDE — से भी शुरुआत कर सकते हैं। 

DataLab का उपयोग

DataLab एक ऑनलाइन इंटीग्रेटेड डेवलपमेंट एनवायरनमेंट (IDE) है जो उपयोगकर्ताओं को कोड लिखने, व्यक्तिगत या सामूहिक रूप से डेटा का विश्लेषण करने, और डेटा इनसाइट्स साझा करने की अनुमति देता है। दूसरे शब्दों में, आप DataLab को डेटा साइंस के लिए विशेष रूप से बनाए गए Google Docs की तरह समझ सकते हैं; यह कैसे काम करता है, इसके बारे में अधिक जानने के लिए हमारा लेख कक्षा में DataLab का उपयोग देखें।

इस कार्य के लिए, हमें एक डेटासेट से वर्कबुक बनानी होगी। सौभाग्य से, DataCamp विश्लेषण के लिए दिलचस्प डेटासेट्स का एक समृद्ध और बढ़ता हुआ संग्रह प्रदान करता है। जब हम किसी डेटासेट से वर्कबुक बनाते हैं, तो एनवायरनमेंट में सभी प्री-कॉन्फ़िगर्ड डेटा और डेटा का एक संक्षिप्त विवरण शामिल होगा ताकि आप शुरुआत से ही व्यावहारिक रूप से काम कर सकें।   

DataCamp डेटासेट का उपयोग करके वर्कबुक बनाने के चरण इस प्रकार हैं: 

  • DataLab ऐप से, साइडबार में "Datasets" चुनें।
  • कोई ऐसा डेटासेट चुनें जिसमें आपकी रुचि हो। एक डायलॉग बॉक्स प्रदर्शित होगा। यह चुने गए डेटासेट का पूर्वावलोकन प्रदान करता है, जिसमें डेटा डिक्शनरी और डेटासेट स्रोत का लिंक, भाषा (Python या R) का संभावित चयन, और इस डेटासेट से अन्य उपयोगकर्ताओं द्वारा बनाए गए प्रकाशनों का अवलोकन शामिल है।
  • Create workbook चुनें।

DataCamp Workspace बनाएं

चित्र 2: एक GIF जो किसी डेटासेट से वर्कबुक बनाने के चरणों को दर्शाता है।

ध्यान दें: कोड के साथ चलने के लिए Creating a Plotly Histogram with Olympics Data देखें।

हम DataCamp के आंतरिक डेटा संग्रह के Olympics Data डेटासेट का उपयोग करेंगे। विवरण के अनुसार, यह आधुनिक ओलंपिक खेलों पर एक ऐतिहासिक डेटासेट है, एथेंस 1896 से रियो 2016 तक। प्रत्येक पंक्ति में किसी ओलंपिक इवेंट में प्रतिस्पर्धा करने वाले एक व्यक्तिगत एथलीट (271116 उदाहरण) और जीता गया मेडल (यदि कोई) शामिल है।

कॉलम निम्नलिखित से मिलकर बने हैं: 

कॉलम

व्याख्या

id

प्रत्येक एथलीट के लिए यूनिक संख्या

name

एथलीट का नाम

sex

M या F

age

एथलीट की आयु

height

सेंटीमीटर में

weight

किलोग्राम में

team

टीम का नाम

noc

नेशनल ओलंपिक कमेटी 3

games

वर्ष और सीज़न

year

पूर्णांक

season

समर या विंटर

city

मेज़बान शहर

sport

खेल

event

इवेंट

medal

Gold, Silver, Bronze, या NA

हमारी वर्तमान समझ के अनुसार, वे कॉलम जिनसे हम हिस्टोग्राम बना सकते हैं, हैं: age, height, weight, और year। इसका कारण यह है कि हिस्टोग्राम निरंतर संख्यात्मक मानों का उपयोग करके बनाए जाते हैं — इनका उपयोग संख्यात्मक डेटा के वितरण को प्रदर्शित करने के लिए किया जाता है, जहाँ डेटा को बिन में बाँटा जाता है और प्रत्येक बिन की गिनती प्रदर्शित होती है। 

हम अपना हिस्टोग्राम बनाने के लिए age कॉलम का उपयोग करेंगे। 

Plotly हिस्टोग्राम बनाना

Python में Plotly के साथ हिस्टोग्राम बनाना काफ़ी सरल है; हम Plotly Express का उपयोग कर सकते हैं, जो एक आसान, उच्च-स्तरीय इंटरफ़ेस है…

import plotly.express as px

# Create a histogram
fig = px.histogram(olympic_data.age, x="age",
                  title="Distribution of Athletes age")
fig.show()

Plotly Express का उपयोग करके बनाया गया हिस्टोग्रामचित्र 3: Plotly Express का उपयोग करके बनाया गया एक हिस्टोग्राम

हमारे पास Graph Objects का उपयोग करने का विकल्प भी है।

import plotly.graph_objects as go

fig = go.Figure(data=[go.Histogram(x=olympic_data.age)])

# add the title
fig.update_layout(title=dict(text="Distribution of Athletes age"))
fig.show()

Plotly Graph Objects का उपयोग करके बनाया गया हिस्टोग्रामचित्र 4: Plotly Graph Objects का उपयोग करके बनाया गया हिस्टोग्राम। 

Plotly के express फ़ंक्शन आंतरिक रूप से graph_objects को कॉल करते हैं, जो एक मान लौटाते हैं। इसलिए, Plotly express फ़ंक्शंस उपयोगी हैं क्योंकि वे उपयोगकर्ताओं को वे डेटा विज़ुअलाइज़ेशन बनाने में सक्षम बनाते हैं जिनके लिए सामान्यतः graph_objects से बनाते समय अधिक पंक्तियों का कोड लगता। 

“plotly.express मॉड्यूल (आम तौर पर px के रूप में इम्पोर्ट किया जाता है) में ऐसे फ़ंक्शंस होते हैं जो एक ही बार में पूरा फ़िगर बना सकते हैं और इन्हें Plotly Express या PX कहा जाता है। Plotly Express, Plotly लाइब्रेरी का बिल्ट-इन हिस्सा है और अधिकांश सामान्य फ़िगर्स बनाने के लिए अनुशंसित शुरुआती बिंदु है। हर Plotly Express फ़ंक्शन आंतरिक रूप से graph objects का उपयोग करता है और एक plotly.graph_objects.Figure इंस्टेंस लौटाता है।”

स्रोत: Plotly Express in Python. 

हालाँकि Plotly का express Plotly लाइब्रेरी में प्रवेश का अनुशंसित माध्यम है, हम अपने हिस्टोग्राम की उपस्थिति को कस्टमाइज़ करने के लिए graph_objects का उपयोग करेंगे क्योंकि इसमें अधिक लचीलापन है।  

Plotly हिस्टोग्राम की उपस्थिति कस्टमाइज़ करना

वर्तमान में हमारा हिस्टोग्राम काफ़ी सादा है। आइए इसे और बेहतर बनाते हैं — शीर्षक के लिए उपयोग किए गए फ़ॉन्ट्स बदलकर और अक्ष लेबल जोड़कर। 

# Create histogram
fig = go.Figure(data=[go.Histogram(x=olympic_data.age)])

fig.update_layout(
    # Set the global font
    font = {
        "family":"Times new Roman",
        "size":16
    },
    # Update title font
    title = {
        "text": "Distribution of Athletes age",
        "y": 0.9, # Sets the y position with respect to `yref`
        "x": 0.5, # Sets the x position of title with respect to `xref`
        "xanchor":"center", # Sets the title's horizontal alignment with respect to its x position
        "yanchor": "top", # Sets the title's vertical alignment with respect to its y position. "      
        "font": { # Only configures font for title
            "family":"Arial",
            "size":20,
            "color": "red"
        }
    }
)

# Add X and Y labels
fig.update_xaxes(title_text="Age")
fig.update_yaxes(title_text="Number of Athletes")

# Display plot
fig.show()

अपडेटेड शीर्षक वाला Plotly हिस्टोग्रामचित्र 5: अपडेटेड शीर्षक और अक्ष लेबल के साथ Plotly हिस्टोग्राम। 

इन परिवर्धनों के साथ हमारा हिस्टोग्राम अधिक सूचनाप्रद है। 

अगला, आइए प्रत्येक बिन का आकार बदलें। 

# Create histogram
fig = go.Figure(data = [
    go.Histogram(
        x = olympic_data.age,
        xbins=go.histogram.XBins(size=5) # Change the bin size to 5
    )
  ]
)

बिन आकार 5 के साथ Plotly हिस्टोग्रामचित्र 6: बिन आकार 5 के साथ Plotly हिस्टोग्राम। 

ऊपर दिए गए कोड में, हमने go.Histogram इंस्टेंस में xbins पैरामीटर को go.histogram.Xbins इंस्टेंस पर सेट किया और उस इंस्टेंस के पैरामीटर के रूप में वांछित बिन आकार परिभाषित किया। ध्यान दें कि हम यह कदम संगत गुणों वाले dict ऑब्जेक्ट का उपयोग करके भी कर सकते थे। 

अंत में, आइए बिन का रंग नारंगी कर दें ताकि विज़ुअलाइज़ेशन थोड़ा उभरकर दिखे। 

# Create histogram
fig = go.Figure(data = [
    go.Histogram(
        x = olympic_data.age,
        xbins=go.histogram.XBins(size=5), # Change the bin size
        marker=go.histogram.Marker(color="orange") # Change the color
    )
  ]
)

नारंगी बिन्स वाला Plotly हिस्टोग्रामचित्र 7: नारंगी बिन्स वाला Plotly हिस्टोग्राम।

काफ़ी बेहतर। 

ऊपर दिए गए कोड में, हमने go.Histogram इंस्टेंस में marker पैरामीटर को go.histogram.Marker इंस्टेंस पर सेट किया और वांछित रंग को उस इंस्टेंस के पैरामीटर के रूप में परिभाषित किया। 

हालाँकि, हम अपने Plotly हिस्टोग्राम में और भी कई कस्टमाइज़ेशन कर सकते हैं, जैसे होवर टेक्स्ट जोड़ना। 

होवर टेक्स्ट सक्षम करना

वर्तमान हिस्टोग्राम में जब भी आप किसी बार पर होवर करते हैं तो प्रत्येक बार क्या दर्शाता है, यह बताने वाला टेक्स्ट प्रदर्शित होता है — देखें चित्र 8। 

वर्तमान होवर टेक्स्ट

चित्र 8: हमारे हिस्टोग्राम पर होवर करने पर दिखाई देने वाला वर्तमान होवर टेक्स्ट। 

यह बहुत सहज नहीं है। जब हम डेटा विज़ुअलाइज़ेशन करते हैं, तो हम चाहते हैं कि हमारे प्लॉट स्वयं स्पष्ट हों — यहाँ तक कि होवर टेक्स्ट भी। इसलिए, आइए हम उस जानकारी को अपडेट करें जो तब दिखाई देती है जब हम किसी बिन पर होवर करते हैं। 

# Create histogram
fig = go.Figure(data = [
    go.Histogram(
        x = olympic_data.age,
        xbins=go.histogram.XBins(size=5), # Change the bin size
        marker=go.histogram.Marker(color="orange"), # Change the color
        hovertemplate="<br>".join([
            "Age Range: %{x}",
            "Number of Athletes: %{y}"]) # Make hover text more informative
    )
  ]
)

अपडेटेड होवर टेक्स्टचित्र 9: अपडेटेड होवर टेक्स्ट जानकारी। 

जब हम किसी बिन पर होवर करते हैं तो दिखाया गया टेक्स्ट अब कहीं अधिक सूचनाप्रद है, जिससे हमारी विज़ुअलाइज़ेशन का अर्थ निकालना और आसान हो गया है। हमने यह अपने go.Histogram इंस्टेंस में hovertemplate पैरामीटर को अपडेट करके किया। 

फ़िल्टरिंग विकल्प जोड़ना

ट्यूटोरियल की शुरुआत में, हमने कहा था कि हम age, height, weight, और year फ़ीचर्स को शामिल करते हुए एक हिस्टोग्राम बना सकते हैं। हमें प्रत्येक के लिए अलग-अलग हिस्टोग्राम बनाने की ज़रूरत नहीं है। 

इसके बजाय, हम एक ही हिस्टोग्राम बना सकते हैं और फ़िल्टर बटन जोड़ सकते हैं जो आपको विज़ुअलाइज़ेशन पर कौन-सा फ़ीचर प्रदर्शित करना है, इसे टॉगल करने देते हैं। 

कोड में यह इस तरह दिखता है।

"""
Starter code provided by vestland on StackOverflow
Link: https://bit.ly/3ipqOMo
"""
# continuous features
continuous_vars = ["age", "height", "weight", "year"]

# plotly
fig = go.Figure()

# set up ONE trace
fig.add_trace(
    go.Histogram(x = olympic_data.age,
                xbins=go.histogram.XBins(size=5), # Change the bin size
                marker=go.histogram.Marker(color="orange"), # Change the color
            )
)

buttons = []

# button with one option for each dataframe
for col in continuous_vars:
    buttons.append(dict(method='restyle',
                        label=col,
                        visible=True,
                        args=[{"x":[olympic_data[col]],
                              "type":'histogram', [0]],
                        )
                  )

# some adjustments to the updatemenus
updatemenu = []
your_menu = dict()
updatemenu.append(your_menu)

updatemenu[0]['buttons'] = buttons
updatemenu[0]['direction'] = 'down'
updatemenu[0]['showactive'] = True

# add dropdown menus to the figure
fig.update_layout(showlegend=False, updatemenus=updatemenu)
fig.show()

फ़िल्टर लागू किए गए हिस्टोग्रामचित्र 10: फ़िल्टर के साथ हिस्टोग्राम जो उपयोगकर्ताओं को एक ही विज़ुअलाइज़ेशन पर विभिन्न फ़ीचर्स के बीच टॉगल करने देता है।

और बस हो गया; Creating a Plotly Histogram with Olympics Data वर्कबुक ज़रूर देखें, और इस ट्यूटोरियल में जो हमने बनाया है, उसके साथ प्रयोग करें। 

समापन 

अब आप Plotly Python में हिस्टोग्राम बनाना जानते हैं; इस ट्यूटोरियल में, हमने कवर किया:

  • हिस्टोग्राम क्या है और यह कैसे काम करता है
  • डेटा विश्लेषण में डेटा विज़ुअलाइज़ेशन का महत्व
  • DataLab के साथ कैसे शुरुआत करें
  • Plotly में हिस्टोग्राम कैसे बनाएं 
  • अपने हिस्टोग्राम को कस्टमाइज़ करने के विभिन्न तरीके
  • फ़िल्टर्स कैसे लागू करें 

यदि आप हिस्टोग्राम बनाने या Plotly का उपयोग करने के बारे में और संसाधन ढूँढ रहे हैं, तो नीचे दिए गए लिंक देखें:

विषय