Matplotlib Python-এ ডেটা ভিজ্যুয়ালাইজেশনের জন্য স্ট্যান্ডার্ড লাইব্রেরি। এটি ডেটার সংখ্যাগুলো সরাসরি না দেখেই প্যাটার্ন, ট্রেন্ড এবং সম্পর্ক বোঝাতে সাহায্য করে। পরিমাণগত তথ্য দক্ষতার সাথে যোগাযোগ করার জন্য এটি অপরিহার্য।
কেন একাধিক সাবপ্লট?
বেশি ক্ষেত্রে দুটি ভিন্ন ডেটাসেট একসাথে তুলনা করতে হয় — যেমন সময়ের সাথে তাপমাত্রা ও আর্দ্রতা, বা দুটি আলাদা পরীক্ষার ফলাফল। subplot() ফাংশন একই ফিগারে একাধিক প্লট সাজাতে দেয়।
ইনস্টলেশন
pip install matplotlib
উদাহরণ: subplot() দিয়ে দুটি গ্রাফ সাইড-বাই-সাইড (ভার্টিক্যালি)
import numpy as np
import matplotlib.pyplot as plt
# ডেটা তৈরি
x1_val = np.linspace(0.0, 6.0)
x2_val = np.linspace(0.0, 3.0)
y1_val = np.cos(2.3 * np.pi * x1_val) * np.exp(-x1_val)
y2_val = np.cos(2.4 * np.pi * x2_val)
# প্রথম সাবপ্লট (উপরে)
plt.subplot(2, 1, 1) # 2 সারি, 1 কলাম, ১ম প্লট
plt.plot(x1_val, y1_val, 'o-') # সার্কেল মার্কার সহ লাইন
plt.title('"subplot" ফাংশন ব্যবহার করে ২টি প্লট')
plt.ylabel('প্লট ১')
# দ্বিতীয় সাবপ্লট (নিচে)
plt.subplot(2, 1, 2) # 2 সারি, 1 কলাম, ২য় প্লট
plt.plot(x2_val, y2_val, '.-') # ডট মার্কার সহ লাইন
plt.xlabel('x-অক্ষ')
plt.ylabel('প্লট ২')
plt.tight_layout() # ওভারল্যাপ এড়াতে (সাজেস্টেড)
plt.show()
আউটপুট

কোড ব্যাখ্যা
- ইম্পোর্ট: NumPy এবং Matplotlib pyplot ইম্পোর্ট করা হয়েছে।
- ডেটা জেনারেশন:
np.linspaceদিয়ে সমান ব্যবধানে মান তৈরি করা হয়েছে।y1_val: ড্যাম্পড কোসাইন ও็บ (কোসাইন × এক্সপোনেনশিয়াল ডিকে)।y2_val: সাধারণ কোসাইন ও็บ।
- প্রথম সাবপ্লট:
plt.subplot(2, 1, 1)মানে — ২টি সারি, ১টি কলাম, প্রথম প্লট।plot()দিয়ে ডেটা رسم,titleওylabelযোগ। - দ্বিতীয় সাবপ্লট:
plt.subplot(2, 1, 2)— একই গ্রিডের ২য় প্লট।xlabelশুধু নিচের প্লটে দেওয়া হয়েছে (স্পেস বাঁচাতে)। - tight_layout(): অটোমেটিক্যালি প্যাডিং ঠিক করে লেবেল ওভারল্যাপ রোধ করে। সর্বোত্তম অনুশীলন।
- প্রদর্শন:
plt.show()।
subplot() সিনট্যাক্স বোঝা
plt.subplot(nrows, ncols, index)
nrows: সারির সংখ্যাncols: কলামের সংখ্যাindex: প্লট নম্বর (১ থেকে শুরু, সারি-মেজর অর্ডারে)
অ্যাডভান্সড: অবজেক্ট-ওরিয়েন্টেড পদ্ধতি (সুপারিশ করা)
fig, axes = plt.subplots(2, 1, figsize=(8, 6))
axes[0].plot(x1_val, y1_val, 'o-')
axes[0].set_title('প্লট ১')
axes[0].set_ylabel('Y-মান')
axes[1].plot(x2_val, y2_val, '.-')
axes[1].set_xlabel('X-মান')
axes[1].set_ylabel('Y-মান')
plt.tight_layout()
plt.show()
এই পদ্ধতিটি আরও নমনীয় — প্রতিটি অ্যাক্সেস আলাদা নিয়ন্ত্রণ করা যায়, শেয়ার্ড X/Y অক্ষ সেট করা যায়, এবং জটিল লেআউটের জন্য উপযুক্ত।
সাধারণ ভুল এড়ানোর টিপস
tight_layout()বাconstrained_layout=Trueব্যবহার করুন।- শেয়ার্ড X-অক্ষের জন্য
sharex=Trueপাস করুনsubplots()-এ। - ভার্টিক্যাল স্পেস কমাতে
fig.subplots_adjust(hspace=0.3)ব্যবহার করুন।