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

Matplotlib Python-এ 'subplot' ফাংশন ব্যবহার করে দুটি গ্রাফ কীভাবে তৈরি করবেন?

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()

আউটপুট

Matplotlib Python-এ  subplot  ফাংশন ব্যবহার করে দুটি গ্রাফ কীভাবে তৈরি করবেন?

কোড ব্যাখ্যা

  1. ইম্পোর্ট: NumPy এবং Matplotlib pyplot ইম্পোর্ট করা হয়েছে।
  2. ডেটা জেনারেশন:
    • np.linspace দিয়ে সমান ব্যবধানে মান তৈরি করা হয়েছে।
    • y1_val: ড্যাম্পড কোসাইন ও็บ (কোসাইন × এক্সপোনেনশিয়াল ডিকে)।
    • y2_val: সাধারণ কোসাইন ও็บ।
  3. প্রথম সাবপ্লট: plt.subplot(2, 1, 1) মানে — ২টি সারি, ১টি কলাম, প্রথম প্লট। plot() দিয়ে ডেটা رسم, title ও ylabel যোগ।
  4. দ্বিতীয় সাবপ্লট: plt.subplot(2, 1, 2) — একই গ্রিডের ২য় প্লট। xlabel শুধু নিচের প্লটে দেওয়া হয়েছে (স্পেস বাঁচাতে)।
  5. tight_layout(): অটোমেটিক্যালি প্যাডিং ঠিক করে লেবেল ওভারল্যাপ রোধ করে। সর্বোত্তম অনুশীলন।
  6. প্রদর্শন: 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) ব্যবহার করুন।
  1. Python-এ Matplotlib ব্যবহার করে সাইন ফাংশন কীভাবে তৈরি করা যায়?

  2. পাইথনে Seaborn-র implot ফাংশন দিয়ে ডিসক্রিট ভ্যারিয়েবলসহ ডেটা ফিট করার পদ্ধতি

  3. পাইথনে Seaborn-র factorplot দিয়ে ডেটা ভিজ্যুয়ালাইজ করার পদ্ধতি

  4. পাইথনে Seaborn-র countplot দিয়ে ডেটা ভিজ্যুয়ালাইজ করার পদ্ধতি