ভূমিকা
দুটি ভেরিয়েবলের মধ্যে কোনো সম্পর্ক আছে কিনা যাচাই করার জন্য স্ক্যাটার প্লট খুবই উপকারী। স্ক্যাটার প্লট হলো একটি চার্ট যেখানে ডেটা X এবং Y ভ্যালু দিয়ে ডট আকারে দেখানো হয়।
কীভাবে করবেন
- Matplotlib ইনস্টল করুন:
pip install matplotlib - 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] - বেসিক স্ক্যাটার প্লট:
plt.scatter(titles, players)নোট: X এবং Y ভ্যালু দুটোই একই সাইজের হতে হবে এবং ডেটা ডিফল্টভাবে ফ্লোটে কনভার্ট হয়।
- 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) - তৃতীয় ডাইমেনশন (রঙ) এবং চতুর্থ ডাইমেনশন (এরিয়া/আকার) যোগ করুন:
- রঙ: র্যান্ডম কালার প্যালেট থেকে বেছে নিন।
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) - পয়েন্টের আকার (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)