GRASS logo


r.colors.matplotlib - Convert or apply a Matplotlib color table to a GRASS raster map


raster, color table, matplotlib


r.colors.matplotlib --help
r.colors.matplotlib [-dngae] [map=name[,name,...]] [output=name] [color=string] [ncolors=integer] [--overwrite] [--help] [--verbose] [--quiet] [--ui]


Generate discrete color table
Generate discrete (interval) color table instead of a continuous one
Reverse the order of colors (invert colors)
Logarithmic scaling
Logarithmic-absolute scaling
Histogram equalization
Allow output files to overwrite existing files
Print usage summary
Verbose module output
Quiet module output
Force launching GUI dialog


Raster map(s) to apply color table to
Name for the new color table rules file
Name of color table
Available color tables depend on the Matplotlib version. Alternatively this can be file name of a file generated by Python viscm tool
Number of colors in the color table
Number of color intervals in a discrete color table with -d
Options: 2-
Default: 6

Table of contents


The r.colors.matplotlib module converts Matplotlib color maps to GRASS color table format (rules) and assigns it to a given raster map. The created color table is always relative (color rules with percent) When option map is specified r.colors.matplotlib assigns the color rules to the given raster map. The color tables is always stretched based on the range of values of the map

Depending on the use case, it may be advantageous to use the -d to discretize the color table into intervals.

Matplotlib gist_earth continuous Matplotlib gist_earth discrete

Continuous (default) and discrete (-d) color table


This module depends on Matplotlib which needs to be installed on your computer. Use your Python package manager (e.g. pip) or distribution package manager to install it.

The selection of color tables depends on the Matplotlib version. Note that the perceptually uniform sequential color tables, namely viridis, inferno, plasma, and magma, are available in Matplotlib 1.5 and above. Color tables are called color maps (or colormaps) in Matplotlib and the best overview of available color maps in the colormaps_reference example in Matplotlib documentation.


Creating a color table as GRASS color rules

Convert summer color table to GRASS color table rules format. If we don't specify output file, it is printed to standard output. We set number of colors to 2 because that's enough for this given color table (it has one color at the beginning and one at the end and linear interpolation can be used for the values in between).
r.colors.matplotlib color=summer ncolors=2
0.000% 0:127:102
100.000% 255:255:102
In case we want to use a discrete color table with intervals with given constant color, we use the -d flag and the number of colors is now the number of intervals, so we want to make it higher, 5 in this case.
r.colors.matplotlib color=summer ncolors=5 -d
0.000% 0:127:102
20.000% 0:127:102
20.000% 63:159:102
40.000% 63:159:102
40.000% 127:191:102
60.000% 127:191:102
60.000% 191:223:102
80.000% 191:223:102
80.000% 255:255:102
100.000% 255:255:102

Setting color table for a raster map

Now we set several different color tables for the elevation raster map from the North Carolina sample dataset. We use continuous and discrete color tables (gradients). The color tables are stretched to fit the raster map range.
r.colors.matplotlib color=summer map=elevation
r.colors.matplotlib color=winter ncolors=8 map=elevation -d
r.colors.matplotlib color=autumn map=elevation
r.colors.matplotlib color=cubehelix ncolors=8 map=elevation -d
r.colors.matplotlib color=terrain map=elevation
We can display legend:
d.legend raster=elevation labelnum=10 at=5,50,7,10
Matplotlib summer Matplotlib winter discrete Matplotlib autumn Matplotlib cubehelix discrete Matplotlib terrain

summer, winter, autumn, cubehelix, and terrain color tables applied to the elevation raster from the North Carolina sample dataset. winter and cubehelix are set to be discrete instead of continuous.

Setting color table for a vector map

First we create a text file with color rules:
r.colors.matplotlib color=summer output=mpl_summer.txt
Then we set color table for the vector to the rules stored in a file:
v.colors map=points rules=mpl_summer.txt
Color table for 3D raster map can be set in the same way.

Using color tables generated by the viscm tool

A viscm tool is a little tool for analyzing color tables and creating new color tables (color maps) for Matplotlib. The tool was used to create perceptually uniform color tables for Matplotlib (for example viridis). The new color table is stored into a file. In version 0.7, a temporary file named /tmp/ which is a Python source code which creates a Colormap object. If this module gets a name of existing file instead of a color table name, it assumes that it this kind of file and reads object called test_cm as Matplotlib color table. The possible workflow follows. (Note that you need to install the viscm tool, e.g. using sudo pip install viscm on Linux.)

Start the tool, create and save a color table:

python -m viscm edit
Now store the color table in GRASS GIS format:
r.colors.matplotlib color=/tmp/ rules=from_viscm.txt
Editing color table in viscm Reviewing color table properties in viscm

Editing color table in viscm (right): the yellow dot on the blue spline must stay in the colored area as the red line moves. Reviewing color table properties is done using several displays including color blindness simulations.

Applied color table form viscm

A color table from viscm applied to the elevation raster from the North Carolina sample dataset.

The same works for any Python files which follow the same schema, so it works for example with files from the BIDS/colormap repository.


r.colors, v.colors, r3.colors, r.cpt2grass, r.colors.cubehelix

colormaps_reference example in Matplotlib documentation


Vaclav Petras, NCSU OSGeoREL


Available at: r.colors.matplotlib source code (history)

Latest change: Monday Jan 30 19:52:26 2023 in commit: cac8d9d848299297977d1315b7e90cc3f7698730

Main index | Raster index | Topics index | Keywords index | Graphical index | Full index

© 2003-2024 GRASS Development Team, GRASS GIS 8.3.3dev Reference Manual