Creating a colormap from a list of colors — Matplotlib 3.9.1 documentation (2024)

Note

Go to the endto download the full example code.

For more detail on creating and manipulating colormaps seeCreating Colormaps in Matplotlib.

Creating a colormap from a list of colorscan be done with the LinearSegmentedColormap.from_list method. You mustpass a list of RGB tuples that define the mixture of colors from 0 to 1.

Creating custom colormaps#

It is also possible to create a custom mapping for a colormap. This isaccomplished by creating dictionary that specifies how the RGB channelschange from one end of the cmap to the other.

Example: suppose you want red to increase from 0 to 1 over the bottomhalf, green to do the same over the middle half, and blue over the tophalf. Then you would use:

cdict = { 'red': ( (0.0, 0.0, 0.0), (0.5, 1.0, 1.0), (1.0, 1.0, 1.0), ), 'green': ( (0.0, 0.0, 0.0), (0.25, 0.0, 0.0), (0.75, 1.0, 1.0), (1.0, 1.0, 1.0), ), 'blue': ( (0.0, 0.0, 0.0), (0.5, 0.0, 0.0), (1.0, 1.0, 1.0), )}

If, as in this example, there are no discontinuities in the r, g, and bcomponents, then it is quite simple: the second and third element ofeach tuple, above, is the same -- call it "y". The first element ("x")defines interpolation intervals over the full range of 0 to 1, and itmust span that whole range. In other words, the values of x divide the0-to-1 range into a set of segments, and y gives the end-point colorvalues for each segment.

Now consider the green, cdict['green'] is saying that for:

If there are discontinuities, then it is a little more complicated. Label the 3elements in each row in the cdict entry for a given color as (x, y0,y1). Then for values of x between x[i] and x[i+1] the color valueis interpolated between y1[i] and y0[i+1].

Going back to a cookbook example:

cdict = { 'red': ( (0.0, 0.0, 0.0), (0.5, 1.0, 0.7), (1.0, 1.0, 1.0), ), 'green': ( (0.0, 0.0, 0.0), (0.5, 1.0, 0.0), (1.0, 1.0, 1.0), ), 'blue': ( (0.0, 0.0, 0.0), (0.5, 0.0, 0.0), (1.0, 1.0, 1.0), )}

and look at cdict['red'][1]; because y0 != y1, it is saying that forx from 0 to 0.5, red increases from 0 to 1, but then it jumps down, so thatfor x from 0.5 to 1, red increases from 0.7 to 1. Green ramps from 0 to 1as x goes from 0 to 0.5, then jumps back to 0, and ramps back to 1 as xgoes from 0.5 to 1.

row i: x y0 y1 / /row i+1: x y0 y1

Above is an attempt to show that for x in the range x[i] to x[i+1],the interpolation is between y1[i] and y0[i+1]. So, y0[0] andy1[-1] are never used.

import matplotlib.pyplot as pltimport numpy as npimport matplotlib as mplfrom matplotlib.colors import LinearSegmentedColormap# Make some illustrative fake data:x = np.arange(0, np.pi, 0.1)y = np.arange(0, 2 * np.pi, 0.1)X, Y = np.meshgrid(x, y)Z = np.cos(X) * np.sin(Y) * 10

Colormaps from a list#

colors = [(1, 0, 0), (0, 1, 0), (0, 0, 1)] # R -> G -> Bn_bins = [3, 6, 10, 100] # Discretizes the interpolation into binscmap_name = 'my_list'fig, axs = plt.subplots(2, 2, figsize=(6, 9))fig.subplots_adjust(left=0.02, bottom=0.06, right=0.95, top=0.94, wspace=0.05)for n_bin, ax in zip(n_bins, axs.flat): # Create the colormap cmap = LinearSegmentedColormap.from_list(cmap_name, colors, N=n_bin) # Fewer bins will result in "coarser" colomap interpolation im = ax.imshow(Z, origin='lower', cmap=cmap) ax.set_title("N bins: %s" % n_bin) fig.colorbar(im, ax=ax)
Creating a colormap from a list of colors — Matplotlib 3.9.1 documentation (1)

Custom colormaps#

cdict1 = { 'red': ( (0.0, 0.0, 0.0), (0.5, 0.0, 0.1), (1.0, 1.0, 1.0), ), 'green': ( (0.0, 0.0, 0.0), (1.0, 0.0, 0.0), ), 'blue': ( (0.0, 0.0, 1.0), (0.5, 0.1, 0.0), (1.0, 0.0, 0.0), )}cdict2 = { 'red': ( (0.0, 0.0, 0.0), (0.5, 0.0, 1.0), (1.0, 0.1, 1.0), ), 'green': ( (0.0, 0.0, 0.0), (1.0, 0.0, 0.0), ), 'blue': ( (0.0, 0.0, 0.1), (0.5, 1.0, 0.0), (1.0, 0.0, 0.0), )}cdict3 = { 'red': ( (0.0, 0.0, 0.0), (0.25, 0.0, 0.0), (0.5, 0.8, 1.0), (0.75, 1.0, 1.0), (1.0, 0.4, 1.0), ), 'green': ( (0.0, 0.0, 0.0), (0.25, 0.0, 0.0), (0.5, 0.9, 0.9), (0.75, 0.0, 0.0), (1.0, 0.0, 0.0), ), 'blue': ( (0.0, 0.0, 0.4), (0.25, 1.0, 1.0), (0.5, 1.0, 0.8), (0.75, 0.0, 0.0), (1.0, 0.0, 0.0), )}# Make a modified version of cdict3 with some transparency# in the middle of the range.cdict4 = { **cdict3, 'alpha': ( (0.0, 1.0, 1.0), # (0.25, 1.0, 1.0), (0.5, 0.3, 0.3), # (0.75, 1.0, 1.0), (1.0, 1.0, 1.0), ),}

Now we will use this example to illustrate 2 ways ofhandling custom colormaps.First, the most direct and explicit:

blue_red1 = LinearSegmentedColormap('BlueRed1', cdict1)

Second, create the map explicitly and register it.Like the first method, this method works with any kindof Colormap, not justa LinearSegmentedColormap:

mpl.colormaps.register(LinearSegmentedColormap('BlueRed2', cdict2))mpl.colormaps.register(LinearSegmentedColormap('BlueRed3', cdict3))mpl.colormaps.register(LinearSegmentedColormap('BlueRedAlpha', cdict4))

Make the figure, with 4 subplots:

fig, axs = plt.subplots(2, 2, figsize=(6, 9))fig.subplots_adjust(left=0.02, bottom=0.06, right=0.95, top=0.94, wspace=0.05)im1 = axs[0, 0].imshow(Z, cmap=blue_red1)fig.colorbar(im1, ax=axs[0, 0])im2 = axs[1, 0].imshow(Z, cmap='BlueRed2')fig.colorbar(im2, ax=axs[1, 0])# Now we will set the third cmap as the default. One would# not normally do this in the middle of a script like this;# it is done here just to illustrate the method.plt.rcParams['image.cmap'] = 'BlueRed3'im3 = axs[0, 1].imshow(Z)fig.colorbar(im3, ax=axs[0, 1])axs[0, 1].set_title("Alpha = 1")# Or as yet another variation, we can replace the rcParams# specification *before* the imshow with the following *after*# imshow.# This sets the new default *and* sets the colormap of the last# image-like item plotted via pyplot, if any.## Draw a line with low zorder so it will be behind the image.axs[1, 1].plot([0, 10 * np.pi], [0, 20 * np.pi], color='c', lw=20, zorder=-1)im4 = axs[1, 1].imshow(Z)fig.colorbar(im4, ax=axs[1, 1])# Here it is: changing the colormap for the current image and its# colorbar after they have been plotted.im4.set_cmap('BlueRedAlpha')axs[1, 1].set_title("Varying alpha")fig.suptitle('Custom Blue-Red colormaps', fontsize=16)fig.subplots_adjust(top=0.9)plt.show()
Creating a colormap from a list of colors — Matplotlib 3.9.1 documentation (2)

References

The use of the following functions, methods, classes and modules is shownin this example:

  • matplotlib.axes.Axes.imshow / matplotlib.pyplot.imshow

  • matplotlib.figure.Figure.colorbar / matplotlib.pyplot.colorbar

  • matplotlib.colors

  • matplotlib.colors.LinearSegmentedColormap

  • matplotlib.colors.LinearSegmentedColormap.from_list

  • matplotlib.cm

  • matplotlib.cm.ScalarMappable.set_cmap

  • matplotlib.cm.ColormapRegistry.register

Total running time of the script: (0 minutes 1.999 seconds)

Download Jupyter notebook: custom_cmap.ipynb

Download Python source code: custom_cmap.py

Gallery generated by Sphinx-Gallery

Creating a colormap from a list of colors — Matplotlib 3.9.1 documentation (2024)

FAQs

How to make a colormap in Matplotlib? ›

To set a colormap (cmap) in Matplotlib, use the cmap parameter in plotting functions like plt. scatter() or plt. imshow() , e.g., plt. imshow(data, cmap='viridis') .

How do you get the colors from a Colormap in Python? ›

We can retrieve colors from any Colormap by calling it with a float or a list of floats in the range [0, 1]; e.g. cmap(0.5) will give the middle color. See also Colormap. __call__ .

How do I get a list of colors in Python? ›

Python colors
  1. 'b'- blue.
  2. 'c' - cyan.
  3. 'g' - green.
  4. 'k' - black.
  5. 'm' - magenta.
  6. 'r' - red.
  7. 'w' - white.
  8. 'y' - yellow.

How to get RGB values from Matplotlib colormap? ›

colors. to_rgb() function is used convert c (ie, color) to an RGB color. It converts the color name into a array of RGB encoded colors. It returns an RGB tuple of three floats from 0-1.

How to define a colormap? ›

Colormaps are three-column arrays containing RGB triplets in which each row defines a distinct color. The correspondence between the colors and your data values depends on the type of visualization you create. You can let MATLAB® control this correspondence, or you can customize it.

What is a color map? ›

A color map is a set of values that are associated with colors. Color maps are used to display a single-band raster consistently with the same colors.

How many colors are there in Colormap? ›

Each predefined colormap provides a palette of 256 colors by default. However, you can specify any number of colors by passing a whole number to the predefined colormap function.

How to use Matplotlib colors? ›

The first method to define a color in a Matplotlib is to use RGB (red, green, blue) or RGBA (red, green, blue, alpha) touple of floats. The numbers should be in range [0, 1] . Each number in the touple controls how many of base color will be in final color.

What is the range of Matplotlib Colormaps? ›

Some of the values in the colormaps span from 0 to 100 (binary and the other grayscale), and others start around L ∗ = 20 . Those that have a smaller range of will accordingly have a smaller perceptual range.

What is the Python library for color palette? ›

Palettable (formerly brewer2mpl) is a library of color palettes for Python. It's written in pure Python with no dependencies, but it can supply color maps for matplotlib. You can use Palettable to customize matplotlib plots or supply colors for a web application.

What is the default Matplotlib color? ›

Matplotlib indexes color at draw time and defaults to black if cycle does not include color.

How do you code colors in Python? ›

Color to Text in Python
  1. The escape codes are entered right into the print statement. print("\033[1;32;40m Bright Green \n")
  2. The above ANSI escape code will set the text colour to bright green. The format is; ...
  3. Here is the code used to create the coloured text. print("\033[0;37;40m Normal text\n")

How to create your own colormap in matplotlib? ›

Creating a colormap from a list of colors can be done with the LinearSegmentedColormap. from_list method. You must pass a list of RGB tuples that define the mixture of colors from 0 to 1.

What is the Colormap function in Pyplot? ›

Matplotlib. pyplot. set_cmap() is a function in matplotlib that is used to set the default colormap for the current image or plot.

What are the RGB values in Colormap? ›

Three-Column Matrix
Colordouble or single RGB Tripletuint8 RGB Triplet
red[1 0 0][255 0 0]
green[0 1 0][0 255 0]
blue[0 0 1][0 0 255]
white[1 1 1][255 255 255]
4 more rows

How to use color code in matplotlib? ›

Matplotlib recognizes the following formats to specify a color. RGB or RGBA (red, green, blue, alpha) tuple of float values in a closed interval [0, 1]. Case-insensitive hex RGB or RGBA string. Case-insensitive RGB or RGBA string equivalent hex shorthand of duplicated characters.

How do I color a graph in matplotlib? ›

For example, you can set the color, marker, linestyle, and markercolor with: plot(x, y, color='green', linestyle='dashed', marker='o', markerfacecolor='blue', markersize=12).

Is it possible to create a colored scatter plot using matplotlib? ›

Scatter plots and other types of data visualisation can be made using the well-known Python module Matplotlib. By giving a list of colours that each plot point should belong to, the user may use Matplotlib to produce a scatter plot with various hues.

How do you make a line color in matplotlib? ›

To change the color of a plot, simply add a color parameter to the plot function and specify the value of the color.

Top Articles
Getting Started - Risk of Rain 2 Modding Wiki
Risk of Rain 2 Modding Wiki
Walgreens Boots Alliance, Inc. (WBA) Stock Price, News, Quote & History - Yahoo Finance
Davita Internet
Pinellas County Jail Mugshots 2023
Unblocked Games Premium Worlds Hardest Game
1970 Chevelle Ss For Sale Craigslist
How Much Is 10000 Nickels
Owatc Canvas
Best Restaurants In Seaside Heights Nj
Locate Td Bank Near Me
Comenity Credit Card Guide 2024: Things To Know And Alternatives
South Ms Farm Trader
Knaben Pirate Download
W303 Tarkov
State HOF Adds 25 More Players
Procore Championship 2024 - PGA TOUR Golf Leaderboard | ESPN
Immortal Ink Waxahachie
Paradise leaked: An analysis of offshore data leaks
Sadie Proposal Ideas
Christina Steele And Nathaniel Hadley Novel
Amortization Calculator
Scream Queens Parents Guide
Galaxy Fold 4 im Test: Kauftipp trotz Nachfolger?
Lost Pizza Nutrition
Craigslist Roseburg Oregon Free Stuff
Inbanithi Age
Jayme's Upscale Resale Abilene Photos
§ 855 BGB - Besitzdiener - Gesetze
Tomb Of The Mask Unblocked Games World
Superhot Free Online Game Unblocked
Play It Again Sports Forsyth Photos
1964 Impala For Sale Craigslist
Hannah Jewell
Tire Pro Candler
Southern Democrat vs. MAGA Republican: Why NC governor race is a defining contest for 2024
Ticketmaster Lion King Chicago
Scottsboro Daily Sentinel Obituaries
Sc Pick 4 Evening Archives
20 bank M&A deals with the largest target asset volume in 2023
Hireright Applicant Center Login
Aita For Announcing My Pregnancy At My Sil Wedding
Walmart Car Service Near Me
Santa Clara County prepares for possible ‘tripledemic,’ with mask mandates for health care settings next month
Leland Nc Craigslist
Hk Jockey Club Result
Iman Fashion Clearance
Craigslist Mendocino
Paperlessemployee/Dollartree
18443168434
Where Is Darla-Jean Stanton Now
Pulpo Yonke Houston Tx
Latest Posts
Article information

Author: Francesca Jacobs Ret

Last Updated:

Views: 5946

Rating: 4.8 / 5 (48 voted)

Reviews: 95% of readers found this page helpful

Author information

Name: Francesca Jacobs Ret

Birthday: 1996-12-09

Address: Apt. 141 1406 Mitch Summit, New Teganshire, UT 82655-0699

Phone: +2296092334654

Job: Technology Architect

Hobby: Snowboarding, Scouting, Foreign language learning, Dowsing, Baton twirling, Sculpting, Cabaret

Introduction: My name is Francesca Jacobs Ret, I am a innocent, super, beautiful, charming, lucky, gentle, clever person who loves writing and wants to share my knowledge and understanding with you.