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
Displaying Images with imshow
📖 Scenario: You work as a data analyst and need to visualize image data to understand it better. Visualizing images helps you see patterns and details that numbers alone can't show.
🎯 Goal: You will create a simple image using numbers and display it using matplotlib's imshow function.
📋 What You'll Learn
Create a 2D list representing a grayscale image
Set a color map configuration variable
Use imshow to display the image with the chosen color map
Show the image using plt.show()
💡 Why This Matters
🌍 Real World
Displaying images is important in fields like medical imaging, satellite data analysis, and computer vision to visually inspect data.
💼 Career
Data scientists often need to visualize image data to explore patterns and communicate findings effectively.
Progress0 / 4 steps
1
Create a 2D list representing a grayscale image
Create a variable called image_data and assign it a 2D list with these exact values: [[0, 50, 100], [150, 200, 250], [255, 125, 75]]
Matplotlib
Hint
Think of image_data as a small grid of pixel brightness values from 0 (black) to 255 (white).
2
Set the color map configuration
Create a variable called color_map and set it to the string 'gray' to display the image in grayscale.
Matplotlib
Hint
The color_map tells imshow how to color the image. 'gray' means black and white.
3
Display the image using imshow
Import matplotlib.pyplot as plt. Then use plt.imshow with image_data and cmap=color_map to display the image.
Matplotlib
Hint
Remember to import matplotlib.pyplot as plt before using imshow.
4
Show the image
Add a line to call plt.show() to display the image window.
Matplotlib
Hint
plt.show() opens a window with the image. Without it, the image won't appear.
Practice
(1/5)
1. What does the imshow function in matplotlib do?
easy
A. Displays image data as a picture
B. Creates a line plot from data points
C. Generates a histogram of values
D. Saves an image file to disk
Solution
Step 1: Understand the purpose of imshow
imshow is designed to display image data visually as a picture.
Step 2: Compare with other plotting functions
Other functions like line plots or histograms serve different purposes, so they don't match imshow's role.
Final Answer:
Displays image data as a picture -> Option A
Quick Check:
imshow = display image [OK]
Hint: Remember: imshow means 'image show' [OK]
Common Mistakes:
Confusing imshow with plot or hist functions
Thinking imshow saves images instead of displaying
Assuming imshow creates charts, not images
2. Which of the following is the correct way to display a 2D numpy array named img as an image using matplotlib?
easy
A. plt.hist(img)
B. plt.plot(img)
C. plt.imshow(img)
D. plt.show(img)
Solution
Step 1: Identify the function to display images
To show an image from a 2D array, plt.imshow() is the correct function.
Step 2: Check other options for correctness
plt.plot() is for line plots, plt.hist() for histograms, and plt.show() displays the current figure but does not take data as argument.
Final Answer:
plt.imshow(img) -> Option C
Quick Check:
Image display = plt.imshow() [OK]
Hint: Use imshow to display arrays as images [OK]
Common Mistakes:
Using plt.plot for image data
Passing data to plt.show() incorrectly
Confusing histogram with image display
3. What will the following code display?
import matplotlib.pyplot as plt
import numpy as np
img = np.array([[0, 1], [1, 0]])
plt.imshow(img, cmap='gray')
plt.show()
medium
A. A 2x2 image with black and white pixels
B. A line plot of the array values
C. An error because cmap='gray' is invalid
D. A blank plot with no image
Solution
Step 1: Understand the array and cmap
The array has values 0 and 1 arranged in a 2x2 grid. Using cmap='gray' maps 0 to black and 1 to white.
Step 2: Predict the image output
The image will show a 2x2 grid with black and white pixels arranged as per the array.
Final Answer:
A 2x2 image with black and white pixels -> Option A
Quick Check:
Array + cmap='gray' = black/white image [OK]
Hint: cmap='gray' shows 0 as black, 1 as white [OK]
Common Mistakes:
Expecting a line plot instead of image
Thinking cmap='gray' causes error
Assuming image will be blank
4. Identify the error in this code snippet:
import matplotlib.pyplot as plt
import numpy as np
img = np.random.rand(5,5)
plt.imshow(img, cmap='viridis', interpolation='none')
plt.show()
medium
A. The interpolation value 'none' is invalid
B. The cmap 'viridis' does not exist
C. np.random.rand cannot create 2D arrays
D. The code runs without error and shows the image
Solution
Step 1: Check interpolation parameter
In matplotlib, interpolation='none' is valid and means no smoothing.
Step 2: Verify cmap and array creation
'viridis' is a standard colormap, and np.random.rand(5,5) creates a 5x5 array of floats between 0 and 1.
Step 3: Confirm code behavior
The code runs without error and displays a 5x5 colored image with viridis colors and no interpolation smoothing.
Final Answer:
The code runs without error and shows the image -> Option D
Quick Check:
interpolation='none' and cmap='viridis' are valid [OK]
Hint: Check docs: 'none' is valid interpolation [OK]
Common Mistakes:
Assuming 'none' is invalid interpolation
Thinking 'viridis' cmap is missing
Believing np.random.rand can't make 2D arrays
5. You have a grayscale image stored as a 2D numpy array with values from 0 to 255. You want to display it with matplotlib so that the darkest pixel is black and the brightest is white. Which code snippet achieves this correctly?
hard
A. plt.imshow(image_array, cmap='viridis', vmin=0, vmax=255)
B. plt.imshow(image_array, cmap='gray', vmin=0, vmax=255)
C. plt.imshow(image_array, cmap='gray', vmin=255, vmax=0)
D. plt.imshow(image_array)
Solution
Step 1: Understand grayscale display with imshow
To show grayscale correctly, use cmap='gray' and set vmin=0 (black) and vmax=255 (white) to map pixel values properly.
Step 2: Evaluate other options
plt.imshow(image_array, cmap='gray', vmin=255, vmax=0) reverses vmin and vmax, causing inverted colors. plt.imshow(image_array, cmap='viridis', vmin=0, vmax=255) uses wrong colormap 'viridis'. plt.imshow(image_array) lacks vmin/vmax, so colors may not map correctly.
Final Answer:
plt.imshow(image_array, cmap='gray', vmin=0, vmax=255) -> Option B
Quick Check:
Grayscale with correct vmin/vmax = plt.imshow(image_array, cmap='gray', vmin=0, vmax=255) [OK]
Hint: Set vmin=0 and vmax=255 for correct grayscale [OK]