Bird
Raised Fist0
Matplotlibdata~10 mins

Image colormaps in Matplotlib - Step-by-Step Execution

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
Concept Flow - Image colormaps
Load Image Data
Select Colormap
Apply Colormap to Data
Display Image with Colormap
Interpret Colors as Data Values
The flow shows loading image data, choosing a colormap, applying it, displaying the image, and interpreting colors as data values.
Execution Sample
Matplotlib
import matplotlib.pyplot as plt
import numpy as np

image = np.random.rand(5,5)
plt.imshow(image, cmap='viridis')
plt.colorbar()
plt.show()
This code creates a 5x5 random image and displays it using the 'viridis' colormap with a colorbar.
Execution Table
StepActionData Shape/ValueColormap AppliedOutput Description
1Generate random 5x5 image(5,5) array with values 0-1NoneRaw grayscale data matrix
2Select colormap 'viridis'N/A'viridis'Colormap chosen for mapping values to colors
3Apply colormap to image data(5,5) array'viridis'Each value mapped to a color in 'viridis' scale
4Display image with plt.imshow(5,5) colored image'viridis'Image shown with colors representing data values
5Add colorbarN/AN/AColorbar shows mapping from data values to colors
6Show plotN/AN/AFinal image with colormap and colorbar displayed
💡 All steps complete, image displayed with colormap applied.
Variable Tracker
VariableStartAfter Step 1After Step 3Final
imageNone5x5 array of floats 0-15x5 array unchanged5x5 array unchanged
cmapNoneNone'viridis''viridis'
Key Moments - 2 Insights
Why do we need to select a colormap before displaying the image?
Because the image data is numeric, the colormap translates these numbers into colors so we can visually interpret the data. See execution_table step 2 and 3.
What does the colorbar represent in the image display?
The colorbar shows how numeric values map to colors in the colormap, helping us understand which colors correspond to which data values. See execution_table step 5.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the shape of the image data after step 1?
A(5,5) array with integer values
B(5,5) array with values between 0 and 1
CSingle number
DEmpty array
💡 Hint
Check the 'Data Shape/Value' column in row for step 1.
At which step is the colormap actually applied to the image data?
AStep 2
BStep 4
CStep 3
DStep 5
💡 Hint
Look at the 'Colormap Applied' column and 'Action' column in the execution table.
If we change the colormap from 'viridis' to 'gray', how would the output description in step 4 change?
AImage colors would be grayscale instead of 'viridis' colors
BImage size would change
CImage data values would change
DColorbar would disappear
💡 Hint
Refer to the 'Output Description' in step 4 and understand what colormaps do.
Concept Snapshot
Image colormaps map numeric image data to colors.
Use plt.imshow(data, cmap='name') to apply.
Common colormaps: 'viridis', 'gray', 'plasma'.
Add plt.colorbar() to show value-color mapping.
Colormaps help visually interpret data values.
Full Transcript
This visual execution traces how image colormaps work in matplotlib. First, numeric image data is created as a 5x5 array of random values between 0 and 1. Then, a colormap named 'viridis' is selected. This colormap maps each numeric value to a specific color. The colormap is applied to the image data, and the image is displayed with colors representing the data values. A colorbar is added to show the mapping from data values to colors. The process ends with the image shown on screen. Key points include why colormaps are needed to translate numbers to colors and how the colorbar helps interpret the image. Changing the colormap changes the colors but not the data or image size.

Practice

(1/5)
1. What does the cmap parameter do in plt.imshow() when displaying an image?
easy
A. It changes how numbers map to colors in the image.
B. It changes the image size.
C. It adds a title to the image.
D. It saves the image to a file.

Solution

  1. Step 1: Understand the role of cmap in plt.imshow()

    The cmap parameter controls the colormap, which maps numeric values to colors in the image.
  2. Step 2: Identify what cmap affects visually

    Changing cmap changes the colors shown, helping interpret data better.
  3. Final Answer:

    It changes how numbers map to colors in the image. -> Option A
  4. Quick Check:

    Colormap = color mapping [OK]
Hint: Remember: cmap controls colors, not size or titles [OK]
Common Mistakes:
  • Thinking cmap changes image size
  • Confusing cmap with adding titles
  • Assuming cmap saves the image
2. Which of the following is the correct way to apply the 'viridis' colormap to an image using matplotlib?
easy
A. plt.imshow(image, color='viridis')
B. plt.imshow(image, cmap='viridis')
C. plt.imshow(image, cmap=viridis)
D. plt.imshow(image, colormap='viridis')

Solution

  1. Step 1: Recall the correct parameter name for colormap

    The parameter to set colormap in plt.imshow() is cmap, and it expects a string name.
  2. Step 2: Check the syntax for passing the colormap

    Passing cmap='viridis' is correct. Using color or colormap is incorrect, and omitting quotes causes an error.
  3. Final Answer:

    plt.imshow(image, cmap='viridis') -> Option B
  4. Quick Check:

    Use cmap='name' syntax [OK]
Hint: Use cmap='colormap_name' exactly [OK]
Common Mistakes:
  • Using color instead of cmap
  • Forgetting quotes around colormap name
  • Using colormap instead of cmap
3. What will the following code display?
import matplotlib.pyplot as plt
import numpy as np
image = np.array([[0, 1], [2, 3]])
plt.imshow(image, cmap='gray')
plt.colorbar()
plt.show()
medium
A. A 2x2 image with shades of gray from black (0) to white (3) and a colorbar showing values 0 to 3.
B. A 2x2 image with random colors and no colorbar.
C. A 2x2 image with rainbow colors and a colorbar showing values 0 to 1.
D. An error because 'gray' is not a valid colormap.

Solution

  1. Step 1: Understand the image data and colormap

    The image is a 2x2 array with values 0 to 3. The 'gray' colormap maps low values to black and high values to white.
  2. Step 2: Analyze the colorbar and display

    The colorbar shows the numeric range from 0 to 3, matching the image values. The image colors range from black (0) to white (3).
  3. Final Answer:

    A 2x2 image with shades of gray from black (0) to white (3) and a colorbar showing values 0 to 3. -> Option A
  4. Quick Check:

    Gray cmap maps 0-3 to black-white [OK]
Hint: Gray cmap means black to white shades [OK]
Common Mistakes:
  • Thinking 'gray' is invalid
  • Ignoring the colorbar range
  • Assuming rainbow colors with 'gray'
4. The code below is intended to show an image with the 'hot' colormap and a colorbar, but it raises an error. What is the problem?
import matplotlib.pyplot as plt
import numpy as np
image = np.random.rand(3,3)
plt.imshow(image, cmap=hot)
plt.colorbar()
plt.show()
medium
A. plt.colorbar() must be called before plt.imshow().
B. The image array shape is invalid for imshow.
C. The colormap name 'hot' should be a string: cmap='hot'.
D. np.random.rand() cannot be used for images.

Solution

  1. Step 1: Check the cmap parameter usage

    The colormap name must be a string. Here, hot is used without quotes, causing a NameError.
  2. Step 2: Verify other code parts

    The image shape is valid, and colorbar usage is correct. np.random.rand() is valid for image data.
  3. Final Answer:

    The colormap name 'hot' should be a string: cmap='hot'. -> Option C
  4. Quick Check:

    Colormap names need quotes [OK]
Hint: Always put colormap names in quotes [OK]
Common Mistakes:
  • Forgetting quotes around colormap name
  • Thinking image shape is wrong
  • Misordering colorbar and imshow
5. You have a 5x5 numpy array with values from 0 to 24. You want to display it using plt.imshow() with the 'coolwarm' colormap but only show colors for values between 5 and 20. Which code snippet correctly applies this?
hard
A. plt.imshow(data, cmap='coolwarm'); plt.colorbar(vmin=5, vmax=20)
B. plt.imshow(data, cmap='coolwarm', min=5, max=20); plt.colorbar()
C. plt.imshow(data, cmap='coolwarm', clip=(5,20)); plt.colorbar()
D. plt.imshow(data, cmap='coolwarm', vmin=5, vmax=20); plt.colorbar()

Solution

  1. Step 1: Understand how to limit color range in imshow

    Use vmin and vmax parameters to set the data range for colormap scaling.
  2. Step 2: Check each option for correct syntax

    plt.imshow(data, cmap='coolwarm', vmin=5, vmax=20); plt.colorbar() uses vmin=5 and vmax=20, which is correct. Other options use invalid parameters or place them incorrectly.
  3. Final Answer:

    plt.imshow(data, cmap='coolwarm', vmin=5, vmax=20); plt.colorbar() -> Option D
  4. Quick Check:

    Use vmin and vmax to clip colors [OK]
Hint: Use vmin and vmax to set color limits [OK]
Common Mistakes:
  • Using min/max instead of vmin/vmax
  • Trying to clip with non-existent parameters
  • Passing vmin/vmax to colorbar instead of imshow