কম্পিউটার টিউটোরিয়াল

পাইথনে Matplotlib দিয়ে কাস্টম রঙ ও আকারের ৪D স্ক্যাটার প্লট আঁকা

ভূমিকা

দুটি ভেরিয়েবলের মধ্যে কোনো সম্পর্ক আছে কিনা যাচাই করার জন্য স্ক্যাটার প্লট খুবই উপকারী। স্ক্যাটার প্লট হলো একটি চার্ট যেখানে ডেটা X এবং Y ভ্যালু দিয়ে ডট আকারে দেখানো হয়।

কীভাবে করবেন

  1. Matplotlib ইনস্টল করুন:
    pip install matplotlib
  2. Matplotlib ইম্পোর্ট করুন এবং ডেটা প্রস্তুত করুন:
    import matplotlib.pyplot as plt
    
    tennis_stats = (('Federer', 20), ('Nadal', 20), ('Djokovic', 17), ('Sampras', 14),
                    ('Emerson', 12), ('laver', 11), ('Murray', 3), ('Wawrinka', 3),
                    ('Zverev', 0), ('Theim', 1), ('Medvedev', 0), ('Tsitsipas', 0),
                    ('Dimitrov', 0), ('Rublev', 0))
    
    titles = [title for player, title in tennis_stats]
    players = [player for player, title in tennis_stats]
    
  3. বেসিক স্ক্যাটার প্লট:
    plt.scatter(titles, players)

    নোট: X এবং Y ভ্যালু দুটোই একই সাইজের হতে হবে এবং ডেটা ডিফল্টভাবে ফ্লোটে কনভার্ট হয়।

  4. X-অক্ষ ইন্টিজার ফরম্যাটে দেখানোর জন্য কাস্টম ফরম্যাটার ব্যবহার করুন:
    from matplotlib.ticker import FuncFormatter
    
    def format_titles(title, pos):
        return '{}'.format(int(title))
    
    plt.gca().xaxis.set_major_formatter(FuncFormatter(format_titles))
    plt.xlabel('Grandslam Titles')
    plt.ylabel('Tennis Player')
    plt.scatter(titles, players)
    
  5. তৃতীয় ডাইমেনশন (রঙ) এবং চতুর্থ ডাইমেনশন (এরিয়া/আকার) যোগ করুন:
    • রঙ: র‍্যান্ডম কালার প্যালেট থেকে বেছে নিন।
    • alpha ভ্যালু পয়েন্টগুলোর ট্রান্সপারেন্সি নিয়ন্ত্রণ করে।
    import random
    
    random_colors = ['#FF0000', '#FFFF00', '#FFFFF0', '#FFFFFF', '#00000F']
    color = [random.choice(random_colors) for _ in range(len(titles))]
    plt.scatter(titles, players, c=color, alpha=0.5)
    
  6. পয়েন্টের আকার (size) কাস্টমাইজ করুন:
    size = [(50 * random.random()) ** 2 for _ in range(len(titles))]
    plt.gca().xaxis.set_major_formatter(FuncFormatter(format_titles))
    plt.xlabel('Grandslam Titles')
    plt.ylabel('Tennis Player')
    plt.scatter(titles, players, c=color, s=size, alpha=0.1)
    

সম্পূর্ণ কোড

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

# preparing data..
tennis_stats = (('Federer', 20), ('Nadal', 20), ('Djokovic', 17), ('Sampras', 14),
                ('Emerson', 12), ('laver', 11), ('Murray', 3), ('Wawrinka', 3),
                ('Zverev', 0), ('Theim', 1), ('Medvedev', 0), ('Tsitsipas', 0),
                ('Dimitrov', 0), ('Rublev', 0))

titles = [title for player, title in tennis_stats]
players = [player for player, title in tennis_stats]

# custom function
def format_titles(title, pos):
    return '{}'.format(int(title))

# define your own color scale
random_colors = ['#FF0000', '#FFFF00', '#FFFFF0', '#FFFFFF', '#00000F']
color = [random.choice(random_colors) for _ in range(len(titles))]

# set the size
size = [(50 * random.random()) ** 2 for _ in range(len(titles))]

plt.gca().xaxis.set_major_formatter(FuncFormatter(format_titles))
plt.xlabel('Grandslam Titles')
plt.ylabel('Tennis Player')
plt.scatter(titles, players, c=color, s=size, alpha=0.1)
  1. Matplotlib-এ NaN মান দিয়ে প্লট এবং কাজ করার পদ্ধতি

  2. ম্যাটপ্লটলিব পাইথনে একক পয়েন্ট প্লট করা

  3. পাইথন ম্যাটপ্লটলিবে ৩D ডেন্সিটি ম্যাপ প্লট করা

  4. পাইথনে Matplotlib দিয়ে কাস্টম রঙ ও আকারের ৪D স্ক্যাটার প্লট আঁকা