Bird
Raised Fist0
Matplotlibdata~5 mins

Multiple images in subplot grid in Matplotlib - Cheat Sheet & Quick Revision

Choose your learning style10 modes available

Start learning this pattern below

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()
How do you display an image in a subplot axis named ax?
Aax.imshow(image)
Bplt.imshow(image)
Cax.plot(image)
Dax.show(image)
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
What is the effect of plt.tight_layout()?
AAdds grid lines
BAdjusts spacing between subplots
CChanges figure size
DSaves the figure
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)
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

      1. 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.
      2. Step 2: Connect to displaying images

        Each axis in the grid can show one image, so it helps organize multiple images neatly.
      3. Final Answer:

        To create a grid of axes where each image can be shown separately -> Option C
      4. 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

      1. Step 1: Identify the axes object type

        When plt.subplots creates multiple axes, they are stored in an array or matrix.
      2. Step 2: Use axes.flat to flatten the array for looping

        axes.flat lets you loop over all axes in a simple 1D way.
      3. Final Answer:

        for ax in axes.flat: -> Option A
      4. 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

      1. Step 1: Understand the code flow

        Four random 5x5 images are created and stored in a list. A 2x2 subplot grid is created.
      2. Step 2: Loop through axes and images

        Each axis in the 2x2 grid shows one image with grayscale colormap and axes turned off.
      3. Final Answer:

        A 2x2 grid showing 4 random grayscale images without axes -> Option B
      4. 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

      1. Step 1: Check the type of axes

        plt.subplots(2, 2) returns a 2D array of axes, so axes[i] is invalid indexing.
      2. Step 2: Correct way to access axes

        Use axes.flat[i] or flatten axes before indexing to access each subplot.
      3. Final Answer:

        axes is a 2D array, so axes[i] causes an error -> Option D
      4. 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

      1. Step 1: Create correct subplot grid

        plt.subplots(2, 3) creates 2 rows and 3 columns, perfect for 6 images.
      2. 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.
      3. Step 3: Set image, title, and turn off axes

        Each axis shows one image, sets a title with number, and hides axis ticks.
      4. 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
      5. Quick Check:

        axes.flat + set_title + axis off = correct grid [OK]
      Hint: Use axes.flat and zip(images, range) for titles [OK]
      Common Mistakes:
      • Indexing 2D axes as 1D without flat
      • Using wrong subplot shape for 6 images
      • Calling non-existent title() method