Topic: Python Matplotlib – From Easy to Top: Part 2 of 6: Subplots, Figures, and Layout Management
---
### 1. Introduction to Figures and Axes
• In Matplotlib, a Figure is the entire image or window on which everything is drawn.
• An Axes is a part of the figure where data is plotted — it contains titles, labels, ticks, lines, etc.
Basic hierarchy:
* Figure ➝ contains one or more Axes
* Axes ➝ the area where the data is actually plotted
* Axis ➝ x-axis and y-axis inside an Axes
---
### 2. Creating Multiple Subplots using `plt.subplot()`
Explanation:
*
*
---
### 3. Creating Subplots with `plt.subplots()` (Recommended)
---
### 4. Sharing Axes Between Subplots
---
### 5. Adjusting Spacing with `subplots_adjust()`
---
### 6. Nested Plots Using `inset_axes`
You can add a small plot inside another:
---
### 7. Advanced Layout: Gridspec
---
### 8. Summary
• Use
• Share axes to align multiple plots.
• Use
• Always use
---
### Exercise
• Create a 2x2 grid of subplots showing different trigonometric functions.
• Add an inset plot inside a sine wave chart.
• Use Gridspec to create an asymmetric layout with at least 5 different plots.
---
#Python #Matplotlib #Subplots #DataVisualization #Gridspec #LayoutManagement
https://t.iss.one/DataScienceM
---
### 1. Introduction to Figures and Axes
• In Matplotlib, a Figure is the entire image or window on which everything is drawn.
• An Axes is a part of the figure where data is plotted — it contains titles, labels, ticks, lines, etc.
Basic hierarchy:
* Figure ➝ contains one or more Axes
* Axes ➝ the area where the data is actually plotted
* Axis ➝ x-axis and y-axis inside an Axes
import matplotlib.pyplot as plt
import numpy as np
---
### 2. Creating Multiple Subplots using `plt.subplot()`
x = np.linspace(0, 2*np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
plt.subplot(2, 1, 1)
plt.plot(x, y1, label="sin(x)")
plt.title("First Subplot")
plt.subplot(2, 1, 2)
plt.plot(x, y2, label="cos(x)", color='green')
plt.title("Second Subplot")
plt.tight_layout()
plt.show()
Explanation:
*
subplot(2, 1, 1)
means 2 rows, 1 column, this is the first plot.*
tight_layout()
prevents overlap between plots.---
### 3. Creating Subplots with `plt.subplots()` (Recommended)
fig, axs = plt.subplots(2, 2, figsize=(8, 6))
x = np.linspace(0, 10, 100)
axs[0, 0].plot(x, np.sin(x))
axs[0, 0].set_title("sin(x)")
axs[0, 1].plot(x, np.cos(x))
axs[0, 1].set_title("cos(x)")
axs[1, 0].plot(x, np.tan(x))
axs[1, 0].set_title("tan(x)")
axs[1, 0].set_ylim(-10, 10)
axs[1, 1].plot(x, np.exp(-x))
axs[1, 1].set_title("exp(-x)")
plt.tight_layout()
plt.show()
---
### 4. Sharing Axes Between Subplots
fig, axs = plt.subplots(1, 2, sharey=True)
x = np.linspace(0, 10, 100)
axs[0].plot(x, np.sin(x))
axs[0].set_title("sin(x)")
axs[1].plot(x, np.cos(x), color='red')
axs[1].set_title("cos(x)")
plt.show()
---
### 5. Adjusting Spacing with `subplots_adjust()`
fig, axs = plt.subplots(2, 2)
fig.subplots_adjust(hspace=0.4, wspace=0.3)
---
### 6. Nested Plots Using `inset_axes`
You can add a small plot inside another:
from mpl_toolkits.axes_grid1.inset_locator import inset_axes
fig, ax = plt.subplots()
x = np.linspace(0, 10, 100)
y = np.sin(x)
ax.plot(x, y)
ax.set_title("Main Plot")
inset_ax = inset_axes(ax, width="30%", height="30%", loc=1)
inset_ax.plot(x, np.cos(x), color='orange')
inset_ax.set_title("Inset", fontsize=8)
plt.show()
---
### 7. Advanced Layout: Gridspec
import matplotlib.gridspec as gridspec
fig = plt.figure(figsize=(8, 6))
gs = gridspec.GridSpec(3, 3)
ax1 = fig.add_subplot(gs[0, :])
ax2 = fig.add_subplot(gs[1, :-1])
ax3 = fig.add_subplot(gs[1:, -1])
ax4 = fig.add_subplot(gs[2, 0])
ax5 = fig.add_subplot(gs[2, 1])
ax1.set_title("Top")
ax2.set_title("Left")
ax3.set_title("Right")
ax4.set_title("Bottom Left")
ax5.set_title("Bottom Center")
plt.tight_layout()
plt.show()
---
### 8. Summary
• Use
subplot()
for quick layouts and subplots()
for flexibility.• Share axes to align multiple plots.
• Use
inset_axes
and gridspec
for custom and complex layouts.• Always use
tight_layout()
or subplots_adjust()
to clean up spacing.---
### Exercise
• Create a 2x2 grid of subplots showing different trigonometric functions.
• Add an inset plot inside a sine wave chart.
• Use Gridspec to create an asymmetric layout with at least 5 different plots.
---
#Python #Matplotlib #Subplots #DataVisualization #Gridspec #LayoutManagement
https://t.iss.one/DataScienceM
❤1