Matplotlib: 2-Day Beginner → Master Roadmap
Beginner-friendly roadmap to master Python’s Matplotlib in just 2 days. Covers essential plots, styling, layouts, and exporting, with mini-tasks to reinforce learning.
🔗 Live Demo
Check out the project here:
Live Demo
Source Code
How to Use This Roadmap
- Follow Day 1 then Day 2.
- Each block has Topic, Why, Key Functions, and a Mini-Task.
- Use the OO API (
fig, ax = plt.subplots()
) from the start. - Practice with tiny arrays or a simple CSV so you focus on visuals, not data wrangling.
Day 1 — Foundations & Core Plots
Block | Topic | Why it matters | Key Functions | Mini-Task |
---|---|---|---|---|
1 | Setup & Basics | OO gives full control |
import matplotlib.pyplot as plt fig, ax = plt.subplots()
|
Create an empty figure & set a title. |
2 | Line Plots | Show trends over x |
ax.plot(x, y) ax.legend()
|
Plot 2 lines with legend. |
3 | Scatter Plots | Show relationships |
ax.scatter(x, y) ax.grid(True)
|
Scatter with grid & labels. |
4 | Bar Charts | Compare categories |
ax.bar(cats, vals) ax.barh(...)
|
Make vertical & horizontal bars. |
5 | Histograms | Show distribution | ax.hist(x, bins=20) |
Compare bins=10 vs bins=30. |
6 | Box / Violin Plots | Spread & outliers | ax.boxplot(data) |
Boxplot of 3 groups. |
7 | Pie / Donut | Quick share % (rarely) | ax.pie(vals, labels=...) |
Create a donut chart. |
8 | Annotations & Text | Highlight key points | ax.annotate('peak', xy=(...)) |
Annotate max point with arrow. |
9 | Legends/Ticks/Spines | Professional polish |
ax.legend() , ax.set_xticks()
|
Rotate ticks & move legend. |
10 | Saving Figures | Share results |
fig.tight_layout() , fig.savefig('plot.png')
|
Export PNG & PDF (300dpi). |
Day 2 — Layouts, Scales, Images, Advanced
Block | Topic | Why it matters | Key Functions | Mini-Task |
---|---|---|---|---|
1 | Subplots & Layouts | Dashboards | plt.subplots(2,2) |
2×2 dashboard. |
2 | Dual/Secondary Axes | Compare scales | ax.twinx() |
Temp+Rain plot. |
3 | Scales & Limits | Reveal patterns | ax.set_xscale('log') |
Linear vs log y. |
4 | Colormaps & Bars | Encode magnitude |
im=ax.imshow(A) fig.colorbar(im)
|
Heatmap w/colorbar. |
5 | Images & Heatmaps | 2D data |
ax.imshow(A) ax.contourf(...)
|
Imshow + contour. |
6 | Error bars | Show uncertainty | ax.errorbar(x, y, yerr=err) |
Line + CI band. |
7 | Time Series | Dates formatting | mdates.DateFormatter('%b %Y') |
Monthly data plot. |
8 | 3D Basics | Surfaces | ax.plot_surface(X,Y,Z) |
Simple 3D. |
9 | Styling & Themes | Consistency | plt.style.use('ggplot') |
Apply theme + font. |
10 | Export like a Pro | Quality output | fig.savefig('plot.svg') |
Save SVG + transparent PNG. |
Beginner Templates
Line + Scatter
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(6,4))
ax.plot(x, y, label='Line', marker='o')
ax.scatter(x, y2, label='Scatter', alpha=0.7)
ax.set(title='My Plot', xlabel='X', ylabel='Y')
ax.legend(); ax.grid(True, linestyle=':')
fig.tight_layout()
fig.savefig('plot.png', dpi=300)
Heatmap + Colorbar
im = ax.imshow(A, cmap='viridis', aspect='auto')
fig.colorbar(im, ax=ax)
ax.set(title='Heatmap')
Mini Projects
- Day 1 Dashboard: 2×2 subplots (line, scatter, bar, hist). Add titles, legend, grid, and export PNG.
- Day 2 Story: Heatmap w/colorbar, line+CI band, date-xaxis plot. Save transparent PNG + SVG.
Common Mistakes & Fixes
- Using only
plt.plot
→ Use OO API (fig, ax = plt.subplots()
). - Overlapping labels →
fig.tight_layout()
orbbox_inches='tight'
. - Bad colors → Use
viridis
,magma
,cividis
. - Too many pie slices → Use bar chart.
- Hidden patterns → Try log scale (
ax.set_yscale('log')
).
2-Day Practice Plan
- Re-type each example (don’t copy-paste). Change 1 param, see result.
- Build a 2×2 dashboard twice: random data & small CSV.
- Recreate Day 2 plots with different styles & colormaps.
🔗 Live Demo
Check out the project here:
Live Demo
Source Code