Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is the purpose of using subplots in matplotlib?
Subplots allow you to display multiple plots or images in a single figure arranged in a grid layout. This helps compare or visualize several datasets side by side.
Click to reveal answer
beginner
How do you create a 2x2 grid of subplots in matplotlib?
Use plt.subplots(2, 2) to create a figure with 4 subplots arranged in 2 rows and 2 columns.
Click to reveal answer
beginner
Which matplotlib function is used to display an image in a subplot?
The function imshow() is used to display an image inside a subplot.
Click to reveal answer
intermediate
How can you remove axis ticks and labels from a subplot image?
Call ax.axis('off') on the subplot axis object to hide axis ticks and labels for a cleaner image display.
Click to reveal answer
intermediate
Why is it useful to use tight_layout() when showing multiple images in subplots?
tight_layout() automatically adjusts spacing between subplots to prevent overlapping titles, labels, or images, making the figure look neat.
Click to reveal answer
Which function creates a grid of subplots in matplotlib?
Aplt.subplots()
Bplt.plot()
Cplt.imshow()
Dplt.grid()
✗ Incorrect
plt.subplots() creates a figure and a grid of subplots.
How do you display an image in a subplot axis named ax?
Aax.imshow(image)
Bplt.imshow(image)
Cax.plot(image)
Dax.show(image)
✗ Incorrect
ax.imshow(image) displays the image inside the specific subplot axis.
What does ax.axis('off') do in a subplot?
AZooms into the image
BShows axis ticks and labels
CChanges axis color
DRemoves axis ticks and labels
✗ Incorrect
ax.axis('off') hides the axis ticks and labels for a cleaner image display.
What is the effect of plt.tight_layout()?
AAdds grid lines
BAdjusts spacing between subplots
CChanges figure size
DSaves the figure
✗ Incorrect
plt.tight_layout() adjusts spacing to prevent overlap between subplots.
If you want a 3x1 grid of images, which command is correct?
Aplt.subplots(3)
Bplt.subplots(1, 3)
Cplt.subplots(3, 1)
Dplt.subplots(1)
✗ Incorrect
plt.subplots(3, 1) creates 3 rows and 1 column of subplots.
Explain how to display multiple images in a grid using matplotlib subplots.
Think about creating the grid, showing images, cleaning axes, and adjusting layout.
You got /4 concepts.
Describe why and how you would remove axis ticks and labels when showing images in subplots.
Focus on visual clarity and how to achieve it.
You got /3 concepts.
Practice
(1/5)
1. What is the main purpose of using plt.subplots when displaying multiple images in a grid?
easy
A. To change the color of images
B. To load images from files automatically
C. To create a grid of axes where each image can be shown separately
D. To save images to disk
Solution
Step 1: Understand the role of plt.subplots
plt.subplots creates a figure and a grid of axes (subplots) to place multiple plots or images.
Step 2: Connect to displaying images
Each axis in the grid can show one image, so it helps organize multiple images neatly.
Final Answer:
To create a grid of axes where each image can be shown separately -> Option C
Quick Check:
plt.subplots = grid for images [OK]
Hint: Remember: plt.subplots makes the grid for multiple images [OK]
Common Mistakes:
Thinking plt.subplots loads or saves images
Confusing plt.subplots with image display functions
Assuming plt.subplots changes image colors
2. Which of the following is the correct way to loop through all axes in a subplot grid to plot images?
easy
A. for ax in axes.flat:
B. for ax in axes.grid():
C. for ax in axes.loop():
D. for ax in axes.images():
Solution
Step 1: Identify the axes object type
When plt.subplots creates multiple axes, they are stored in an array or matrix.
Step 2: Use axes.flat to flatten the array for looping
axes.flat lets you loop over all axes in a simple 1D way.
Final Answer:
for ax in axes.flat: -> Option A
Quick Check:
axes.flat loops all axes [OK]
Hint: Use axes.flat to loop all subplot axes easily [OK]
Common Mistakes:
Using non-existent methods like axes.grid()
Trying to loop axes directly without flattening
Confusing axes with image objects
3. What will be the output of this code snippet?
import matplotlib.pyplot as plt
import numpy as np
images = [np.random.rand(5,5) for _ in range(4)]
fig, axes = plt.subplots(2, 2)
for ax, img in zip(axes.flat, images):
ax.imshow(img, cmap='gray')
ax.axis('off')
plt.show()
medium
A. A single image shown in one plot
B. A 2x2 grid showing 4 random grayscale images without axes
C. An error because axes.flat is not iterable
D. A 2x2 grid with empty plots and no images
Solution
Step 1: Understand the code flow
Four random 5x5 images are created and stored in a list. A 2x2 subplot grid is created.
Step 2: Loop through axes and images
Each axis in the 2x2 grid shows one image with grayscale colormap and axes turned off.
Final Answer:
A 2x2 grid showing 4 random grayscale images without axes -> Option B
Quick Check:
Loop + imshow + axis off = grid of images [OK]
Hint: Loop axes.flat with images to plot all in grid [OK]
Common Mistakes:
Expecting only one image to show
Thinking axes.flat is not iterable
Forgetting to turn axes off
4. Identify the error in this code that tries to display 3 images in a 2x2 grid:
fig, axes = plt.subplots(2, 2)
images = [img1, img2, img3]
for i in range(3):
axes[i].imshow(images[i])
axes[i].axis('off')
medium
A. axis('off') is not a valid method
B. images list is empty
C. imshow cannot display images in subplots
D. axes is a 2D array, so axes[i] causes an error
Solution
Step 1: Check the type of axes
plt.subplots(2, 2) returns a 2D array of axes, so axes[i] is invalid indexing.
Step 2: Correct way to access axes
Use axes.flat[i] or flatten axes before indexing to access each subplot.
Final Answer:
axes is a 2D array, so axes[i] causes an error -> Option D
Quick Check:
axes 2D array needs flat for 1D access [OK]
Hint: Use axes.flat to index subplots in 1D [OK]
Common Mistakes:
Indexing 2D axes array as 1D
Assuming images list is empty
Misusing axis('off') method
5. You want to display 6 images in a 2x3 grid with titles on each subplot. Which code snippet correctly does this?
hard
A. fig, axes = plt.subplots(2, 3)
for ax, img, i in zip(axes.flat, images, range(6)):
ax.imshow(img)
ax.set_title(f'Image {i+1}')
ax.axis('off')
B. fig, axes = plt.subplots(3, 2)
for i in range(6):
axes[i].imshow(images[i])
axes[i].title(f'Image {i}')
axes[i].axis('off')
C. fig, axes = plt.subplots(2, 3)
for i in range(6):
axes[i].imshow(images[i])
axes[i].set_title('Image')
axes[i].axis('off')
D. fig, axes = plt.subplots(2, 3)
for ax, img in zip(axes, images):
ax.imshow(img)
ax.set_title('Image')
ax.axis('off')
Solution
Step 1: Create correct subplot grid
plt.subplots(2, 3) creates 2 rows and 3 columns, perfect for 6 images.
Step 2: Loop through axes.flat and images with index
Using axes.flat flattens the 2D axes array for easy looping. Adding index with range(6) helps set titles.
Step 3: Set image, title, and turn off axes
Each axis shows one image, sets a title with number, and hides axis ticks.
Final Answer:
fig, axes = plt.subplots(2, 3)
for ax, img, i in zip(axes.flat, images, range(6)):
ax.imshow(img)
ax.set_title(f'Image {i+1}')
ax.axis('off') -> Option A
Quick Check:
axes.flat + set_title + axis off = correct grid [OK]
Hint: Use axes.flat and zip(images, range) for titles [OK]