পরিচয়..
দুটি ভেরিয়েবলের মধ্যে কোনো সম্পর্ক আছে কিনা তা যাচাই করতে দুটি মাত্রা সহ ডেটা প্রতিনিধিত্ব করার সময় স্ক্যাটার-প্লট খুবই কার্যকর। একটি স্ক্যাটার প্লট হল চার্ট যেখানে ডেটা X এবং Y মানের সাথে ডট হিসাবে উপস্থাপন করা হয়।
কিভাবে করবেন..
1. কমান্ড অনুসরণ করে matplotlib ইনস্টল করুন।
pip install matplotlib
2. ম্যাটপ্লটলিব আমদানি করুন
plttennis_stats =(('ফেদেরার', 20),('নাদাল', 20),('জোকোভিচ', 17),('সাম্প্রাস', 14),('এমারসন', 12) হিসাবে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))
3. পরবর্তী ধাপ হল যেকোনো অ্যারে বিন্যাসে ডেটা প্রস্তুত করা। এছাড়াও আমরা ডাটাবেস বা স্প্রেডশীট থেকে ডেটা পড়তে পারি এবং নীচের ফর্ম্যাটে ডেটা ফর্ম্যাট করতে পারি।
titles = [title for player, title in tennis_stats] players = [player for player, title in tennis_stats]
4. .scatter-এর জন্য প্যারামিটার, ম্যাটপ্লটলিবের অন্যান্য পদ্ধতির মতো, X এবং Y মানের অ্যারের প্রয়োজন৷
*দ্রষ্টব্য -* X এবং Y মান উভয়ই একই আকারের হওয়া প্রয়োজন এবং এছাড়াও ডেটা ডিফল্টভাবে একটি ফ্লোটে রূপান্তরিত হয়৷
plt.scatter(titles, players)
<matplotlib.collections.PathCollection at 0x28df3684ac0>
5. ওহ, x-অক্ষে প্লট করা আমার গ্র্যান্ডস্লাম শিরোনাম একটি ভাসমান। আমি তাদের পূর্ণসংখ্যাতে রূপান্তর করব এবং নীচের ফাংশনে x-অক্ষ এবং y-অক্ষের জন্য একটি শিরোনাম যোগ করব। অক্ষ ফর্ম্যাটার .set_major_formatter দিয়ে ওভাররাইট করা হবে।
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)
6. স্ক্যাটার প্লটকে শুধুমাত্র একটি 2D চার্ট হিসাবে ভাববেন না, একটি স্ক্যাটার প্লট তৃতীয় (ক্ষেত্রফল) এমনকি একটি চতুর্থ মাত্রা (রঙ) যোগ করতে পারে। আমি নীচে কি করব তা আমাকে একটু ব্যাখ্যা করতে দিন৷
৷প্রথমে আমরা আপনার পছন্দের রঙগুলিকে সংজ্ঞায়িত করব এবং তারপরে এলোমেলোভাবে রঙগুলি বেছে নিয়ে এবং ভ্রমণের মান নির্ধারণের মাধ্যমে সেগুলি লুপ করব৷
আলফা মান প্রতিটি পয়েন্টকে অর্ধস্বচ্ছ করে তোলে, যেখানে তারা ওভারল্যাপ করে তা আমাদের দেখতে দেয়। এই মান যত বেশি হবে, পয়েন্টগুলি তত কম স্বচ্ছ হবে।
import random # define your own color scale. random_colors = ['#FF0000', '#FFFF00', '#FFFFF0', '#FFFFFF', '#00000F'] # set the number of colors similar to our data values color = [random.choice(random_colors) for _ in range(len(titles))] plt.scatter(titles, players, c=color, alpha=0.5)
<matplotlib.collections.PathCollection at 0x28df2242d00>
7. এখন আমি, উপস্থাপনের আকার/ক্ষেত্রকে একটু বড় করি।
import random # define your own color scale. random_colors = ['#FF0000', '#FFFF00', '#FFFFF0', '#FFFFFF', '#00000F'] # set the number of colors similar to our data values 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)
<matplotlib.collections.PathCollection at 0x28df22e2430>
মনে রাখবেন, একটি গ্রাফের চূড়ান্ত লক্ষ্য হল ডেটা বোঝা সহজ করা।
স্ক্যাটার প্লট দিয়ে আপনি কী করতে পারেন তার মূল বিষয়গুলো আমি দেখিয়েছি। আপনি আরও অনেক কিছু করতে পারেন উদাহরণস্বরূপ, রঙকে আকারের উপর নির্ভর করে একই আকারের সমস্ত বিন্দুকে একই রঙের করতে, যা আমাদের ডেটার মধ্যে পার্থক্য করতে সাহায্য করতে পারে।
আরও এক্সপ্লোর করুন - https://matplotlib.org/.
অবশেষে, সবকিছু একসাথে করা।
উদাহরণ
# imports import matplotlib.pyplot as plt import random # 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 from matplotlib.ticker import FuncFormatter def format_titles(title, pos): return '{}'.format(int(title)) # define your own color scale. random_colors = ['#FF0000', '#FFFF00', '#FFFFF0', '#FFFFFF', '#00000F'] # set the number of colors similar to our data values 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)
<matplotlib.collections.PathCollection at 0x2aa7676b670>