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:
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
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: ন্যায্য তুলনা
sharex=True ছাড়া প্রতিটা histogram নিজের মতো x-axis নিত, আর ৮ নম্বরের উন্নতি চোখে পড়ত না।
Pandas-এর plotting
Pandas-এর .plot() ভেতরে Matplotlib — আর ax= দিয়ে নির্দিষ্ট subplot-এ আঁকতে পারে:
DataFrame-এর প্রতিটা column একটা line — label আর legend নিজে থেকে। দ্রুত exploration-এ খুব কাজের।
Save করা
| Format | কখন |
|---|---|
.png | Web, slide, chat — সব জায়গায় চলে |
.svg / .pdf | Report, paper — vector, যত খুশি বড় করো, ঝাপসা হবে না |
Exercise
Exercise
পাশাপাশি দুটো graph
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"
Quiz
Challenge
Challenge
EDA dashboard
eda_dashboard(df) function লেখো যেটা একটা house-price DataFrame-এর জন্য 2×2 dashboard বানিয়ে fig return করে:
- উপরে-বামে:
price-এর histogram, 20 bin — title"Price" - উপরে-ডানে:
areaবনামpricescatter — title"Area vs price" - নিচে-বামে: প্রতিটা
city-র গড় price-এর bar chart, বেশি থেকে কম — title"Mean price by city" - নিচে-ডানে:
yearঅনুযায়ী গড় price-এর line — title"Mean price by year"
layout="constrained" দিয়ে, যাতে লেখা একে অপরের ওপর না পড়ে।
বাস্তবে কোথায় ব্যবহার হয়?
একটা classifier-এর evaluation dashboard — training curve, confusion matrix আর class-ভিত্তিক accuracy এক জায়গায়। এই module-এর সব কৌশল একসাথে:
এক নজরে তিনটা কথা: 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।