Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन Matplotlib में 4D स्कैटर प्लॉट (कस्टम रंग और आकार) बनाने का तरीका

परिचय

स्कैटर प्लॉट दो चरों के बीच संबंध देखने के लिए उपयोगी है। Matplotlib में स्कैटर प्लॉट 4 आयाम तक दिखा सकता है: X, Y, रंग (color), आकार (size)।

चरण

  1. इंस्टॉल करें: pip install matplotlib
  2. इम्पोर्ट और डेटा:
    
    import matplotlib.pyplot as plt
    import random
    
    tennis_stats = (('Federer', 20), ('Nadal', 20), ('Djokovic', 17), 
                    ('Sampras', 14), ('Emerson', 12), ('Laver', 11),
                    ('Murray', 3), ('Wawrinka', 3), ('Zverev', 0),
                    ('Thiem', 1), ('Medvedev', 0), ('Tsitsipas', 0),
                    ('Dimitrov', 0), ('Rublev', 0))
    
    titles = [t for p, t in tennis_stats]
    players = [p for p, t in tennis_stats]
    
  3. बेसिक स्कैटर:
    
    plt.scatter(titles, players)
    plt.xlabel('ग्रैंड स्लैम खिताब')
    plt.ylabel('टेनिस खिलाड़ी')
    plt.show()
    
  4. X-अक्ष को पूर्णांक दिखाने के लिए फॉर्मेटर:
    
    from matplotlib.ticker import FuncFormatter
    
    def format_titles(x, pos):
        return str(int(x))
    
    plt.gca().xaxis.set_major_formatter(FuncFormatter(format_titles))
    
  5. कस्टम रंग (रैंडम):
    
    random_colors = ['#FF0000', '#FFFF00', '#FFFFF0', '#FFFFFF', '#00000F']
    colors = [random.choice(random_colors) for _ in titles]
    plt.scatter(titles, players, c=colors, alpha=0.5)
    
  6. कस्टम आकार (रैंडम):
    
    sizes = [(50 * random.random()) ** 2 for _ in titles]
    plt.scatter(titles, players, c=colors, s=sizes, alpha=0.1)
    

पूर्ण कोड


import matplotlib.pyplot as plt
import random
from matplotlib.ticker import FuncFormatter

tennis_stats = (('Federer', 20), ('Nadal', 20), ('Djokovic', 17),
                ('Sampras', 14), ('Emerson', 12), ('Laver', 11),
                ('Murray', 3), ('Wawrinka', 3), ('Zverev', 0),
                ('Thiem', 1), ('Medvedev', 0), ('Tsitsipas', 0),
                ('Dimitrov', 0), ('Rublev', 0))

titles = [t for p, t in tennis_stats]
players = [p for p, t in tennis_stats]

def format_titles(x, pos):
    return str(int(x))

random_colors = ['#FF0000', '#FFFF00', '#FFFFF0', '#FFFFFF', '#00000F']
colors = [random.choice(random_colors) for _ in titles]
sizes = [(50 * random.random()) ** 2 for _ in titles]

plt.gca().xaxis.set_major_formatter(FuncFormatter(format_titles))
plt.xlabel('ग्रैंड स्लैम खिताब')
plt.ylabel('टेनिस खिलाड़ी')
plt.scatter(titles, players, c=colors, s=sizes, alpha=0.1)
plt.title('टेनिस खिलाड़ी: खिताब vs रैंक (रंग/आकार रैंडम)')
plt.show()

उन्नत विचार

  • रंग को किसी तीसरे चर (जैसे जीत दर) से मैप करें।
  • आकार को चौथे चर (जैसे टूर्नामेंट खेले) से मैप करें।
  • cmap पैरामीटर का उपयोग करके कलरमैप लागू करें।
  • alpha पारदर्शिता के लिए (0-1)।

समय जटिलता

प्लॉटिंग O(n) जहां n डेटा बिंदुओं की संख्या है।

  1. मैटप्लॉटलिब पायथन में सिंगल पॉइंट कैसे प्लॉट करें? मैटप्लॉटलिब पायथन में सिंगल पॉइंट कैसे प्लॉट करें?

    मैटप्लॉटलिब में सिंगल डेटा पॉइंट प्लॉट करने के लिए, हम निम्नलिखित चरण अपना सकते हैं: सिंगल वैल्यू के साथ x और y के लिए सूची इनिशियलाइज़ करें। 0 से 5 तक X और Y एक्सिस रेंज को सीमित करें। वर्तमान लाइन स्टाइल में ग्रिड लेआउट करें। marker=o, markeredgecolor=red, markerfacecolor=green के साथ plot() मेथ

  1. मैटप्लॉटलिब के साथ पायथन में 3D डेंसिटी मैप कैसे प्लॉट करें? मैटप्लॉटलिब के साथ पायथन में 3D डेंसिटी मैप कैसे प्लॉट करें?

    मैटप्लॉटलिब के साथ पायथन में 3D डेंसिटी मैप प्लॉट करने के लिए, हम निम्नलिखित चरण अपना सकते हैं: नम्पाई का उपयोग करके side, x, y और z बनाएं। नम्पाई linspace तीसरे नंबर के आधार पर दो पॉइंट्स के बीच डेटा बनाने में मदद करता है। side डेटा का उपयोग करके कोऑर्डिनेट वैक्टर्स से कोऑर्डिनेट मैट्रिक्स लौटाएं

  1. पायथन Matplotlib में 4D स्कैटर प्लॉट (कस्टम रंग और आकार) बनाने का तरीका पायथन Matplotlib में 4D स्कैटर प्लॉट (कस्टम रंग और आकार) बनाने का तरीका

    परिचय स्कैटर प्लॉट दो चरों के बीच संबंध देखने के लिए उपयोगी है। Matplotlib में स्कैटर प्लॉट 4 आयाम तक दिखा सकता है: X, Y, रंग (color), आकार (size)। चरण इंस्टॉल करें: pip install matplotlib इम्पोर्ट और डेटा: import matplotlib.pyplot as plt import random tennis_stats = ((Federer, 20), (Nadal, 20),