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.
🔗 Resources
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()
or bbox_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.
🔗 Resources
Top comments (0)