Skip to content

r.colors

Creates/modifies the color table associated with a raster map.

r.colors [-rwldngae] [map=name [,name,...]] [file=name] [color=style] [raster=name] [raster_3d=name] [rules=name] [offset=float] [scale=float] [--verbose] [--quiet] [--qq] [--ui]

Example:

r.colors map=name

grass.script.parse_command("r.colors", map=None, file=None, color=None, raster=None, raster_3d=None, rules=None, offset=0, scale=1, flags=None, verbose=False, quiet=False, superquiet=False)

Example:

gs.parse_command("r.colors", map="name")

Parameters

map=name [,name,...]
    Name of raster map(s)
file=name
    Input file with one map name per line
    Input map names can be defined in an input file in case a large amount of maps must be specified. This option is mutual exclusive to the map option.
color=style
    Name of color table
    Allowed values: aspect, aspectcolr, bcyr, bgyr, blues, byg, byr, celsius, corine, curvature, differences, elevation, etopo2, evi, fahrenheit, forest_cover, gdd, grass, greens, grey, grey.eq, grey.log, grey1.0, grey255, gyr, haxby, inferno, kelvin, magma, ndvi, ndwi, nlcd, oranges, plasma, population, population_dens, precipitation, precipitation_daily, precipitation_monthly, rainbow, ramp, random, reds, roygbiv, rstcurv, ryb, ryg, sepia, slope, soilmoisture, srtm, srtm_percent, srtm_plus, terrain, viridis, water, wave
        aspect     aspect: aspect oriented grey colors [range: map values]
        aspectcolr     aspectcolr: aspect oriented rainbow colors [range: 0 to 360]
        bcyr     bcyr: blue through cyan through yellow to red [range: map values]
        bgyr     bgyr: blue through green through yellow to red [range: map values]
        blues     blues: white to blue [range: map values]
        byg     byg: blue through yellow to green [range: map values]
        byr     byr: blue through yellow to red [range: map values]
        celsius     celsius: blue to red for degree Celsius temperature [range: -80 to 80]
        corine     corine: EU Corine land cover colors [range: 111 to 995]
        curvature     curvature: for terrain curvatures (from v.surf.rst and r.slope.aspect) [range: map values]
        differences     differences: differences oriented colors [range: map values]
        elevation     elevation: maps relative ranges of raster values to elevation color ramp [range: map values]
        etopo2     etopo2: colors for ETOPO2 worldwide bathymetry/topography [range: -11000 to 8850]
        evi     evi: enhanced vegetative index colors [range: -1 to 1]
        fahrenheit     fahrenheit: blue to red for Fahrenheit temperature [range: -112 to 176]
        forest_cover     forest_cover: percentage of forest cover [range: 0 to 100]
        gdd     gdd: accumulated growing degree days [range: 0 to 6000]
        grass     grass: GRASS GIS green (perceptually uniform) [range: map values]
        greens     greens: white to green [range: map values]
        grey     grey: grey scale [range: map values]
        grey.eq     grey.eq: histogram-equalized grey scale [range: map values]
        grey.log     grey.log: histogram logarithmic transformed grey scale [range: map values]
        grey1.0     grey1.0: grey scale for raster values between 0.0-1.0 [range: 0 to 1]
        grey255     grey255: grey scale for raster values between 0-255 [range: 0 to 255]
        gyr     gyr: green through yellow to red [range: map values]
        haxby     haxby: relative colors for bathymetry or topography [range: map values]
        inferno     inferno: perceptually uniform sequential color table inferno [range: map values]
        kelvin     kelvin: blue to red for temperature in Kelvin scale [range: 193.15 to 353.15]
        magma     magma: perceptually uniform sequential color table magma [range: map values]
        ndvi     ndvi: Normalized Difference Vegetation Index colors [range: -1 to 1]
        ndwi     ndwi: Normalized Difference Water Index colors [range: -200 to 200]
        nlcd     nlcd: US National Land Cover Dataset colors [range: 0 to 95]
        oranges     oranges: white to orange [range: map values]
        plasma     plasma: perceptually uniform sequential color table plasma [range: map values]
        population     population: color table covering human population classification breaks [range: 0 to 2e+09]
        population_dens     population_dens: color table covering human population density classification breaks [range: 0 to 1e+09]
        precipitation     precipitation: precipitation color table (0..2000mm) [range: 0 to 7000]
        precipitation_daily     precipitation_daily: precipitation color table (0..1000mm) [range: 0 to 10000]
        precipitation_monthly     precipitation_monthly: precipitation color table (0..1000mm) [range: 0 to 1000]
        rainbow     rainbow: rainbow color table [range: map values]
        ramp     ramp: color ramp [range: map values]
        random     random: random color table [range: map values]
        reds     reds: white to red [range: map values]
        roygbiv     roygbiv: [range: map values]
        rstcurv     rstcurv: terrain curvature (from r.resamp.rst) [range: map values]
        ryb     ryb: red through yellow to blue [range: map values]
        ryg     ryg: red through yellow to green [range: map values]
        sepia     sepia: yellowish-brown through to white [range: map values]
        slope     slope: r.slope.aspect-type slope colors for raster values 0-90 [range: 0 to 90]
        soilmoisture     soilmoisture: soilmoisture color table (0.0-1.0) [range: 0 to 1]
        srtm     srtm: color palette for Shuttle Radar Topography Mission elevation [range: -11000 to 8850]
        srtm_percent     srtm_percent: color palette for Shuttle Radar Topography Mission using relative elevation [range: map values]
        srtm_plus     srtm_plus: color palette for Shuttle Radar Topography Mission elevation (with seafloor colors) [range: -11000 to 8850]
        terrain     terrain: global elevation color table covering -11000 to +8850m [range: -11000 to 8850]
        viridis     viridis: perceptually uniform sequential color table viridis [range: map values]
        water     water: water depth [range: map values]
        wave     wave: color wave [range: map values]
raster=name
    Raster map from which to copy color table
raster_3d=name
    3D raster map from which to copy color table
rules=name
    Path to rules file
    "-" to read rules from stdin
offset=float
    Offset for color rule values
    New value = (old value + offset) * scale
    Default: 0
scale=float
    Scale for color rule values
    New value = (old value + offset) * scale
    Default: 1
-r
    Remove existing color table
-w
    Only write new color table if it does not already exist
-l
    List available rules then exit
-d
    List available rules with description then exit
    If a color rule is given, only this rule is listed
-n
    Invert colors
-g
    Logarithmic scaling
-a
    Logarithmic-absolute scaling
-e
    Histogram equalization
--help
    Print usage summary
--verbose
    Verbose module output
--quiet
    Quiet module output
--qq
    Very quiet module output
--ui
    Force launching GUI dialog

map : str | list[str], optional
    Name of raster map(s)
    Used as: input, raster, name
file : str, optional
    Input file with one map name per line
    Input map names can be defined in an input file in case a large amount of maps must be specified. This option is mutual exclusive to the map option.
    Used as: input, file, name
color : str, optional
    Name of color table
    Used as: input, colortable, style
    Allowed values: aspect, aspectcolr, bcyr, bgyr, blues, byg, byr, celsius, corine, curvature, differences, elevation, etopo2, evi, fahrenheit, forest_cover, gdd, grass, greens, grey, grey.eq, grey.log, grey1.0, grey255, gyr, haxby, inferno, kelvin, magma, ndvi, ndwi, nlcd, oranges, plasma, population, population_dens, precipitation, precipitation_daily, precipitation_monthly, rainbow, ramp, random, reds, roygbiv, rstcurv, ryb, ryg, sepia, slope, soilmoisture, srtm, srtm_percent, srtm_plus, terrain, viridis, water, wave
        aspect     aspect: aspect oriented grey colors [range: map values]
        aspectcolr     aspectcolr: aspect oriented rainbow colors [range: 0 to 360]
        bcyr     bcyr: blue through cyan through yellow to red [range: map values]
        bgyr     bgyr: blue through green through yellow to red [range: map values]
        blues     blues: white to blue [range: map values]
        byg     byg: blue through yellow to green [range: map values]
        byr     byr: blue through yellow to red [range: map values]
        celsius     celsius: blue to red for degree Celsius temperature [range: -80 to 80]
        corine     corine: EU Corine land cover colors [range: 111 to 995]
        curvature     curvature: for terrain curvatures (from v.surf.rst and r.slope.aspect) [range: map values]
        differences     differences: differences oriented colors [range: map values]
        elevation     elevation: maps relative ranges of raster values to elevation color ramp [range: map values]
        etopo2     etopo2: colors for ETOPO2 worldwide bathymetry/topography [range: -11000 to 8850]
        evi     evi: enhanced vegetative index colors [range: -1 to 1]
        fahrenheit     fahrenheit: blue to red for Fahrenheit temperature [range: -112 to 176]
        forest_cover     forest_cover: percentage of forest cover [range: 0 to 100]
        gdd     gdd: accumulated growing degree days [range: 0 to 6000]
        grass     grass: GRASS GIS green (perceptually uniform) [range: map values]
        greens     greens: white to green [range: map values]
        grey     grey: grey scale [range: map values]
        grey.eq     grey.eq: histogram-equalized grey scale [range: map values]
        grey.log     grey.log: histogram logarithmic transformed grey scale [range: map values]
        grey1.0     grey1.0: grey scale for raster values between 0.0-1.0 [range: 0 to 1]
        grey255     grey255: grey scale for raster values between 0-255 [range: 0 to 255]
        gyr     gyr: green through yellow to red [range: map values]
        haxby     haxby: relative colors for bathymetry or topography [range: map values]
        inferno     inferno: perceptually uniform sequential color table inferno [range: map values]
        kelvin     kelvin: blue to red for temperature in Kelvin scale [range: 193.15 to 353.15]
        magma     magma: perceptually uniform sequential color table magma [range: map values]
        ndvi     ndvi: Normalized Difference Vegetation Index colors [range: -1 to 1]
        ndwi     ndwi: Normalized Difference Water Index colors [range: -200 to 200]
        nlcd     nlcd: US National Land Cover Dataset colors [range: 0 to 95]
        oranges     oranges: white to orange [range: map values]
        plasma     plasma: perceptually uniform sequential color table plasma [range: map values]
        population     population: color table covering human population classification breaks [range: 0 to 2e+09]
        population_dens     population_dens: color table covering human population density classification breaks [range: 0 to 1e+09]
        precipitation     precipitation: precipitation color table (0..2000mm) [range: 0 to 7000]
        precipitation_daily     precipitation_daily: precipitation color table (0..1000mm) [range: 0 to 10000]
        precipitation_monthly     precipitation_monthly: precipitation color table (0..1000mm) [range: 0 to 1000]
        rainbow     rainbow: rainbow color table [range: map values]
        ramp     ramp: color ramp [range: map values]
        random     random: random color table [range: map values]
        reds     reds: white to red [range: map values]
        roygbiv     roygbiv: [range: map values]
        rstcurv     rstcurv: terrain curvature (from r.resamp.rst) [range: map values]
        ryb     ryb: red through yellow to blue [range: map values]
        ryg     ryg: red through yellow to green [range: map values]
        sepia     sepia: yellowish-brown through to white [range: map values]
        slope     slope: r.slope.aspect-type slope colors for raster values 0-90 [range: 0 to 90]
        soilmoisture     soilmoisture: soilmoisture color table (0.0-1.0) [range: 0 to 1]
        srtm     srtm: color palette for Shuttle Radar Topography Mission elevation [range: -11000 to 8850]
        srtm_percent     srtm_percent: color palette for Shuttle Radar Topography Mission using relative elevation [range: map values]
        srtm_plus     srtm_plus: color palette for Shuttle Radar Topography Mission elevation (with seafloor colors) [range: -11000 to 8850]
        terrain     terrain: global elevation color table covering -11000 to +8850m [range: -11000 to 8850]
        viridis     viridis: perceptually uniform sequential color table viridis [range: map values]
        water     water: water depth [range: map values]
        wave     wave: color wave [range: map values]
raster : str, optional
    Raster map from which to copy color table
    Used as: input, raster, name
raster_3d : str, optional
    3D raster map from which to copy color table
    Used as: input, raster_3d, name
rules : str, optional
    Path to rules file
    "-" to read rules from stdin
    Used as: input, file, name
offset : float, optional
    Offset for color rule values
    New value = (old value + offset) * scale
    Default: 0
scale : float, optional
    Scale for color rule values
    New value = (old value + offset) * scale
    Default: 1
flags : str, optional
    Allowed values: r, w, l, d, n, g, a, e
    r
        Remove existing color table
    w
        Only write new color table if it does not already exist
    l
        List available rules then exit
    d
        List available rules with description then exit
        If a color rule is given, only this rule is listed
    n
        Invert colors
    g
        Logarithmic scaling
    a
        Logarithmic-absolute scaling
    e
        Histogram equalization
verbose: bool, optional
    Verbose module output
    Default: False
quiet: bool, optional
    Quiet module output
    Default: False
superquiet: bool, optional
    Very quiet module output
    Default: False

DESCRIPTION

r.colors allows the user to create and/or modify the color table for a raster map or several raster maps at once. The raster maps (specified on the command line by map or as file using an input file with one map name per line) must exist in the user's current mapset search path.

The raster option allows user to specify a raster map name from which to copy the color map.

The raster_3d option allows user to specify a 3D raster map name from which to copy the color map.

The -e flag equalizes the original raster's color table. It can preclude the need for grey.eq rule, when used as -e color=grey. Note however, that this will not yield a color table identical to color=grey.eq, because grey.eq scales the fraction by 256 to get a grey level, while -e uses it to interpolate the original color table. If the original color table is a 0-255 grey scale, -e is effectively scaling the fraction by 255. Different algorithms are used. -e is designed to work with any color table, both the floating point and the integer raster maps.

The -g flag divides the raster's grey value range into 100 logarithmically equal steps (where "step" is a rule with the same grey level for the start and end points). It can preclude the need for grey.log rule, when used as -g color=grey. Note however, that this will not yield a color table identical to color=grey.log. Different algorithms are used. Unlike color=grey.log, -g is designed to work with both floating point and integer rasters, without performance issues with large datasets, of any original color table. Logarithmic scaling doesn't work on negative values. In the case when the value range includes zero, there's no realistic solution.

The -e and -g flags are not mutually exclusive.

offset and scale modify color rules to match the values of a raster map using the formula new_value = (old_value + offset) x scale. For example, if the units of a raster map are Kelvin x 50, the color rules celsius can be applied with offset=273.15 and scale=50.

If the user specifies the -w flag, the current color table file for the input map will not be overwritten. This means that the color table is created only if the map does not already have a color table. If this option is not specified, the color table will be created if one does not exist, or modified if it does.

Color table types aspect, grey, grey.eq (histogram-equalized grey scale), byg (blue-yellow-green), byr (blue-yellow-red), gyr (green-yellow-red), rainbow, ramp, ryg (red-yellow-green), random, and wave are pre-defined color tables that r.colors knows how to create without any further input.

In case several input raster maps are provided the range (min, max) of all maps will be used for color table creation. Hence the created color table will span from the smallest minimum to the largest maximum value of all input raster maps and will be applied to all input raster maps.

In general, tables which associate colors with percentages (aspect, bcyr, byg, byr, elevation, grey, gyr, rainbow, ramp, ryb, ryg and wave) can be applied to any data, while those which use absolute values (aspectcolr, curvature, etopo2, evi, ndvi, population, slope, srtm, and terrain) only make sense for data with certain ranges. One can get a rough idea of the applicability of a colour table by reading the corresponding rules file ($GISBASE/etc/colors/<name>). For example the slope rule is defined as:

0  255:255:255
2  255:255:0
5  0:255:0
10 0:255 255
15 0:0:255
30 255:0:255
50 255:0:0
90 0:0:0

This is designed for the slope map generated by r.slope.aspect, where the value is a slope angle between 0 and 90 degrees.

Similarly, the aspectcolr rule:

0 white
1 yellow
90 green
180 cyan
270 red
360 yellow

is designed for the aspect maps produced by r.slope.aspect, where the value is a heading between 0 and 360 degrees.

The rules color table type will cause r.colors to read color table specifications from standard input (stdin) and will build the color table accordingly.

Using color table type rules, there are two ways to build a color table: by category values and by "percent" values.

To build a color table by category values' indices, the user should determine the range of category values in the raster map with which the color table will be used. Specific category values will then be associated with specific colors. Note that a color does not have to be assigned for every valid category value because r.colors will interpolate a color ramp to fill in where color specification rules have been left out. The format of such a specification is as follows:

category_value color_name
category_value color_name
.. ..
.. ..
category_value color_name
end

Each category value must be valid for the raster map, category values must be in ascending order and only use standard GRASS color names (aqua, black, blue, brown, cyan, gray, green, grey, indigo, magenta, orange, purple, red, violet, white, yellow).

Colors can also be specified by color numbers each in the range 0-255. The format of a category value color table specification using color numbers instead of color names is as follows:

category_value red_number:green_number:blue_number
category_value red_number:green_number:blue_number
.. .. .. ..
.. .. .. ..
category_value red_number:green_number:blue_number
end

Specifying a color table by "percent" values allows one to treat a color table as if it were numbered from 0 to 100. The format of a "percent" value color table specification is the same as for a category value color specification, except that the category values are replaced by "percent" values, each from 0-100, in ascending order. The format is as follows:

percent_value% color_name
percent_value% color_name
.. ..
.. ..
percent_value% color_name
end

Using "percent" value color table specification rules, colors can also be specified by color numbers each in the range 0-255. The format of a percent value color table specification using color numbers instead of color names is as follows:

percent_value% red_number:green_number:blue_number
percent_value% red_number:green_number:blue_number
.. .. .. ..
.. .. .. ..
percent_value% red_number:green_number:blue_number
end

Note that you can also mix these two methods of color table specification; for example:

0 black
10% yellow
78 blue
100% 0:255:230
end

To set the NULL (no data) color, use the "nv" (null values) parameter:

0 black
10% yellow
nv white
end

To set the color to used for undefined values (beyond the range of the color rules) use the "default" parameter:

0 red
1 blue
default grey
end

NOTES

All color tables are stored in $GISBASE/etc/colors/. Further user-defined color tables can also be stored in this directory for access from the color parameter or in a user defined directory. See also r.colors.out for printing color tables easily to the terminal.

The color table assigned to a raster map is stored in $GISDBASE/location/mapset/colr/.

EXAMPLES

The below example shows how you can specify colors for a three category map, assigning red to category 1, green to category 2, and blue to category 3. Start by using a text editor to create the following rules specification file (save it with the name rules.file):

1 red
2 green
3 blue
end

The color table can then by assigned to map threecats by the following GRASS commands (two ways are available):

# read input from stdin
cat rules.file | r.colors map=threecats rules=-

# read directly from file
r.colors map=threecats rules=rules.file

To create a natural looking lookup table (LUT) for true map layer elevation, use the following rules specification file. It will assign light green shades to the lower elevations (first 20% of the LUT), and then darker greens (next 15%, and next 20%) and light browns (next 20%) for middle elevations, and darker browns (next 15%) for higher elevations, and finally yellow for the highest peaks (last 10% of LUT).

0% 0:230:0
20% 0:160:0
35% 50:130:0
55% 120:100:30
75% 120:130:40
90% 170:160:50
100% 255:255:100

To invert the current rules:

r.colors map=current_raster -n rast=current_raster

SEE ALSO

d.colortable, d.histogram, d.legend, r.colors.out r.colors.stddev, r.support, r.univar, v.colors, v.colors.out, r3.colors, r3.colors.out

See also wiki page Color tables (from GRASS User Wiki)

ColorBrewer is an online tool designed to help people select good color schemes for maps and other graphics.

AUTHORS

Michael Shapiro and David Johnson
Support for 3D rasters by Soeren Gebbert

SOURCE CODE

Available at: r.colors source code (history)
Latest change: Wednesday Mar 05 15:56:01 2025 in commit da3981a