"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > इंटरएक्टिव डाइस रोल डेटा विज़ुअलाइज़ेशन के लिए प्लॉटली का उपयोग करना

इंटरएक्टिव डाइस रोल डेटा विज़ुअलाइज़ेशन के लिए प्लॉटली का उपयोग करना

2024-08-01 को प्रकाशित
ब्राउज़ करें:904

इस ट्यूटोरियल में, हम सीखेंगे कि इंटरैक्टिव विज़ुअलाइज़ेशन बनाने के लिए प्लॉटली का उपयोग कैसे करें। हमारा प्रोजेक्ट पासा पलटने के परिणामों का विश्लेषण करने पर केंद्रित है। एक छह-तरफा पासे को घुमाते समय, 1 से 6 तक की किसी भी संख्या के प्रकट होने की समान संभावना होती है। हालाँकि, जब आप कई पासे घुमाते हैं, तो कुछ संख्याएँ दूसरों की तुलना में अधिक संभावित हो जाती हैं। हमारा लक्ष्य पासा रोल का अनुकरण करके और डेटासेट बनाकर इन संभावनाओं को निर्धारित करना है। उसके बाद, हम यह दिखाने के लिए कई रोल के परिणामों का दृश्य रूप से प्रतिनिधित्व करेंगे कि कौन से परिणाम सांख्यिकीय रूप से अधिक संभावित हैं।

प्लॉटली क्या है?

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

प्लॉटली स्थापित करना

हम पिप का उपयोग करके प्लॉटली स्थापित करेंगे। हमें डेटा के साथ कुशलतापूर्वक काम करने के लिए एक लाइब्रेरी पांडा स्थापित करने की भी आवश्यकता है, क्योंकि प्लॉटली एक्सप्रेस इस पर निर्भर करता है।

$ python -m pip install --user plotly
$ python -m pip install --user pandas

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

डाई क्लास बनाना

सबसे पहले, हम पासे के रोल को अनुकरण करने के लिए निम्नलिखित डाई क्लास बनाएंगे। हम फ़ाइल को Die.py नाम देंगे।

from random import randint

class Die:
    """A class representing a single die."""

    def __init__(self, num_sides = 6):
        """Assume a six-sided die"""
        self.num_sides = num_sides


    def roll(self):
        """Return a random value between 1 and number of sides."""
        return randint(1, self.num_sides)

__ init __ विधि एक वैकल्पिक तर्क लेती है। जब डाई का एक उदाहरण बनाया जाता है, तो कोई तर्क प्रदान नहीं किए जाने पर पक्षों की संख्या छह होगी। यदि कोई तर्क दिया जाता है, तो यह पासे पर पक्षों की संख्या निर्धारित करेगा।

रोल() विधि 1 और पक्षों की संख्या के बीच एक यादृच्छिक संख्या वापस करने के लिए रैंडिंट() फ़ंक्शन का उपयोग करती है। यह फ़ंक्शन प्रारंभिक मान (1), अंतिम मान (num_sides), या बीच में कोई पूर्णांक लौटा सकता है। पासों का नाम उनकी भुजाओं की संख्या के अनुसार रखा जाता है: छह भुजाओं वाले पासे को D6 कहा जाता है, दस भुजाओं वाले पासे को D10 कहा जाता है, इत्यादि।

पासे को घुमाना

प्लॉटली.एक्सप्रेस को बार-बार टाइप करने से बचने के लिए हम पहले उपनाम पीएक्स का उपयोग करके प्लॉटली एक्सप्रेस मॉड्यूल को आयात करते हैं। हम दो D8 पासों को घुमाने का अनुकरण करने के लिए पासे का एक उदाहरण बनाएंगे। हम इस फ़ाइल को dice_visual.py नाम देते हैं।

import plotly.express as px

from die import Die

# Create two D8.
die_1 = Die(8)
die_2 = Die(8)

# Make some rolls, and store results in a list.
results = []
for roll_num in range(500_000):
    result = die_1.roll()   die_2.roll()
    results.append(result)

परिणामों का विश्लेषण

सबसे छोटा संभावित परिणाम प्रत्येक पासे (2) पर सबसे छोटी संख्या का योग है। सबसे बड़ा संभावित परिणाम प्रत्येक पासे (16) पर सबसे बड़ी संख्या का योग है जो कि max_results को सौंपा गया है। वेरिएबल max_result poss_results उत्पन्न करने के लिए कोड की पठनीयता में सुधार करता है। हम रेंज (2,16) लिख सकते थे, लेकिन यह केवल दो डी8 पासों के लिए काम करेगा। वास्तविक दुनिया की परिस्थितियों का अनुकरण करते समय, ऐसा कोड विकसित करना सबसे अच्छा है जो परिदृश्यों की एक विस्तृत श्रृंखला को आसानी से संभाल सके।

# Analyze the result.
frequencies = []
max_results = die_1.num_sides   die_2.num_sides
poss_results = range(2, max_results   1)
for value in poss_results:
    frequency = results.count(value)
    frequencies.append(frequency)

परिणामों की कल्पना करना.

हमने शीर्षक को परिभाषित किया और इसे 'शीर्षक' को सौंपा। हमने अक्ष लेबल निर्दिष्ट करने के लिए एक शब्दकोश बनाया। शब्दकोश की कुंजियाँ उन लेबलों का प्रतिनिधित्व करती हैं जिन्हें हम अनुकूलित करना चाहते हैं, जबकि मान उन कस्टम लेबलों का प्रतिनिधित्व करते हैं जिनका हम उपयोग करना चाहते हैं। हम x-अक्ष को 'परिणाम' और y-अक्ष को 'परिणाम की आवृत्ति' नाम देते हैं। बार ग्राफ़ बनाने के लिए, हम px.bar() फ़ंक्शन का उपयोग करते हैं और वैकल्पिक चर 'शीर्षक' और 'लेबल' पास करते हैं।

# Visualize the results.
title = "Results of Rolling Two D8 Dice 500,000 Times"
labels = {'x': 'Result', 'y': 'Frequency of Result'}
fig = px.bar(x = poss_results, y = frequencies, title = title,
 labels = labels)
fig.show()

प्लॉट प्रत्येक अक्ष के लिए एक उपयुक्त शीर्षक और लेबल के साथ तैयार किया गया है, जैसा कि नीचे चित्र में देखा गया है।

Image description

आगे अनुकूलन

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

प्लॉटली एक अपडेट_लेआउट() विधि प्रदान करता है जो आपको किसी आकृति के बनने के बाद उसमें विभिन्न परिवर्तन करने की सुविधा देता है। यहां बताया गया है कि आप प्लॉटली को प्रत्येक बार को अपना स्वयं का लेबल देने का निर्देश कैसे दे सकते हैं।

# Further customize chart.
fig.update_layout(xaxis_dtick = 1)
fig.show()
#fig.write_html('dice_visual_d6d10.xhtml')

अपडेट_लेआउट() विधि अंजीर ऑब्जेक्ट पर लागू होती है, जो संपूर्ण चार्ट का प्रतिनिधित्व करती है। हम x-अक्ष पर टिक चिह्नों के बीच की दूरी निर्धारित करने के लिए xaxis_dtick विकल्प का उपयोग करते हैं। हम रिक्ति को 1 पर सेट करते हैं ताकि प्रत्येक बार को लेबल किया जा सके। जब आप dice_visual.py को दोबारा चलाते हैं, तो आपको प्रत्येक बार पर लेबल देखना चाहिए।

Image description

इस कोड को विभिन्न आकारों के रोलिंग पासों का अनुकरण करने के लिए आसानी से अनुकूलित किया जा सकता है। D6 और D10 बनाने के लिए, दो डाई इंस्टेंस बनाते समय तर्क 6 और 10 पास करें। पहले लूप को रोल की वांछित संख्या में बदलें और तदनुसार ग्राफ़ का शीर्षक बदलें।

हम अपने प्रोग्राम के माध्यम से gig.show() पर कॉल को fig.write_html() पर कॉल के साथ बदलकर चार्ट को HTML फ़ाइल के रूप में स्वचालित रूप से सहेज सकते हैं।

write_html() विधि के लिए एक तर्क की आवश्यकता होती है: लिखने के लिए फ़ाइल का नाम। यदि आप केवल फ़ाइल नाम प्रदान करते हैं, तो फ़ाइल को .py फ़ाइल के समान निर्देशिका में सहेजा जाएगा। आउटपुट फ़ाइल को अपने सिस्टम पर कहीं भी सहेजने के लिए आप path ऑब्जेक्ट के साथ write_html() को भी कॉल कर सकते हैं।

यहां पूरा कोड है:

import plotly.express as px

from die import Die

# Create two D8.
die_1 = Die(8)
die_2 = Die(8)

# Make some rolls, and store results in a list.
results = []
for roll_num in range(500_000):
    result = die_1.roll()   die_2.roll()
    results.append(result)

# Analyze the result.
frequencies = []
max_results = die_1.num_sides   die_2.num_sides
poss_results = range(2, max_results   1)
for value in poss_results:
    frequency = results.count(value)
    frequencies.append(frequency)

# Visualize the results.
title = "Results of Rolling Two D8 Dice 500,000 Times"
labels = {'x': 'Result', 'y': 'Frequency of Result'}
fig = px.bar(x = poss_results, y = frequencies, title = title, labels = labels)

# Further customize chart.
fig.update_layout(xaxis_dtick = 1)
fig.write_html('dice_visual.xhtml')

पुनर्रचना

स्पष्टता के लिए, इस अनुभाग की लिस्टिंग फॉर लूप्स के लंबे रूप का उपयोग करती है। हम एक या दोनों लूप के लिए सूची समझ का उपयोग करके कोड को दोबारा तैयार कर सकते हैं। सूची समझ का उपयोग करने वाला कोड यहां दिया गया है:

import plotly.express as px

from die import Die

# Create two D8.
die_1 = Die(8)
die_2 = Die(8)

# Make some rolls, and store results in a list.
results = [die_1.roll()   die_2.roll() for roll_num in range(500_000) ]

# Analyze the result.
max_results = die_1.num_sides   die_2.num_sides
poss_results = range(2, max_results   1)
frequencies = [results.count(value) for value in poss_results]

# Visualize the results.
title = "Results of Rolling Two D8 Dice 500,000 Times"
labels = {'x': 'Result', 'y': 'Frequency of Result'}
fig = px.bar(x = poss_results, y = frequencies, title = title, labels = labels)

# Further customize chart.
fig.update_layout(xaxis_dtick = 1)

fig.write_html('dice_visual_list_comprehension.xhtml')

निष्कर्ष

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

विज्ञप्ति वक्तव्य यह लेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/terrancoder/using-plotly-for-interactive-dice-roll-data-visualization-48f6?1 यदि कोई उल्लंघन है, तो कृपया हटाने के लिए स्टडी_गोलंग@163.com पर संपर्क करें। यह
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3