মূল content-এ যাও

Python for AI/Matplotlib/Lesson 53

Subplots

এক figure-এ অনেক graph — subplots grid, figsize, sharex/sharey, layout="constrained", Pandas-এর .plot(ax=...), আর savefig দিয়ে report-এর জন্য save।

সময়
22 মিনিট
Exercise
1
Challenge
1
Quiz
3 প্রশ্ন

সহজ ভাষায়

একটা graph একটা গল্প বলে। কিন্তু data বুঝতে প্রায়ই কয়েকটা graph পাশাপাশি দেখতে হয়। plt.subplots(rows, cols) দিয়ে একটা figure-এ একটা grid:

main.py
axes[0, 0]   axes[0, 1]
axes[1, 0]   axes[1, 1]

axes একটা NumPy array — [row, column] দিয়ে প্রতিটা graph।

কেন দরকার?

  • EDA (Exploratory Data Analysis) — নতুন dataset পেলে প্রথম কাজ: প্রতিটা feature-এর distribution, target-এর সাথে সম্পর্ক — সব এক পাতায়
  • Model তুলনা — একই graph কয়েকটা model-এর জন্য পাশাপাশি
  • Report — একটা পরিচ্ছন্ন figure, যা save করে presentation বা paper-এ দেওয়া যায়

Figure-এর আকার আর layout

main.py
  • figsize=(width, height) — inch-এ
  • layout="constrained" — title আর label একে অপরের ওপর পড়ে না, নিজে থেকে জায়গা ঠিক করে। (পুরনো code-এ দেখবে plt.tight_layout() — একই উদ্দেশ্য।)

এক সারির subplot-এ (1, 3) axes 1D array — axes[0], axes[1]…। Loop-এ for ax in axes লেখা সহজ।

sharex / sharey: ন্যায্য তুলনা

main.py

sharex=True ছাড়া প্রতিটা histogram নিজের মতো x-axis নিত, আর ৮ নম্বরের উন্নতি চোখে পড়ত না।

Pandas-এর plotting

Pandas-এর .plot() ভেতরে Matplotlib — আর ax= দিয়ে নির্দিষ্ট subplot-এ আঁকতে পারে:

main.py

DataFrame-এর প্রতিটা column একটা line — label আর legend নিজে থেকে। দ্রুত exploration-এ খুব কাজের।

Save করা

main.py
Formatকখন
.pngWeb, slide, chat — সব জায়গায় চলে
.svg / .pdfReport, paper — vector, যত খুশি বড় করো, ঝাপসা হবে না

Exercise

Exercise

পাশাপাশি দুটো graph

+20 XP

fig, axes = plt.subplots(1, 2, figsize=(9, 3.5)) দিয়ে পাশাপাশি দুটো graph:

  • বামে (axes[0]): days বনাম sales-এর line plot, title "Daily sales"
  • ডানে (axes[1]): sales-এর histogram, 8টা bin, title "Sales distribution"
solution.py

Quiz

  1. Q1fig, axes = plt.subplots(2, 3) — axes-এর shape কী, আর নিচের সারির মাঝেরটা কোনটা?
  2. Q2sharex=True কী করে?
  3. Q3Report-এর জন্য graph save করতে কোনটা?
0/3 answered

Challenge

Challenge

EDA dashboard

+50 XP

eda_dashboard(df) function লেখো যেটা একটা house-price DataFrame-এর জন্য 2×2 dashboard বানিয়ে fig return করে:

  • উপরে-বামে: price-এর histogram, 20 bin — title "Price"
  • উপরে-ডানে: area বনাম price scatter — title "Area vs price"
  • নিচে-বামে: প্রতিটা city-র গড় price-এর bar chart, বেশি থেকে কম — title "Mean price by city"
  • নিচে-ডানে: year অনুযায়ী গড় price-এর line — title "Mean price by year"

layout="constrained" দিয়ে, যাতে লেখা একে অপরের ওপর না পড়ে।

solution.py

বাস্তবে কোথায় ব্যবহার হয়?

একটা classifier-এর evaluation dashboard — training curve, confusion matrix আর class-ভিত্তিক accuracy এক জায়গায়। এই module-এর সব কৌশল একসাথে:

main.py

এক নজরে তিনটা কথা: model প্রায় ১০ epoch-এর পর আর উন্নতি করছে না, আর "neutral" class-টাই সবচেয়ে দুর্বল — আর বিশেষ করে "negative"-এর সাথে গুলিয়ে যাচ্ছে। পরের পদক্ষেপ স্পষ্ট: আরও neutral উদাহরণ সংগ্রহ।

Interview প্রশ্ন

  • Beginner: fig আর axes-এর পার্থক্য কী? একটা 2×2 grid-এর নিচে-ডানের graph কীভাবে পাবে?
  • Intermediate: নতুন dataset-এর EDA-তে কোন কোন graph আঁকবে, কেন?
  • Advanced: Misleading visualization-এর কয়েকটা উদাহরণ দাও (কাটা y-axis, আলাদা scale, 3D pie)। ভালো data visualization-এর নীতি কী?

এরপর কী?

অভিনন্দন! 🎉 Matplotlib module শেষ। তুমি এখন data থেকে line, scatter, histogram, bar chart আর পুরো dashboard বানাতে পারো।

এখন পর্যন্ত শেখা সবকিছু — Python, NumPy, Pandas, Matplotlib — একসাথে কাজে লাগানোর সময়। Python for AI path-এর শেষ অংশ: Project: Student Performance Analysis — একটা real dataset load, clean, analyze আর visualize করে নিজের প্রথম data analysis project।