v.colors allows the user to create and/or modify the color table for a vector map. The vector map (specified on the command line by map) must exist in the user's current mapset search path.

As input a vector map with a numeric data column is required which is used to apply the color rules. The color values are stored in a string column (default name "GRASSRGB", varchar(11)) by saving the RRR:GGG:BBB values suitable for use with 'd.vect -a'. If this RGB column is not found in the attribute table, it is automatically created.

How it works: it creates a dummy raster map with the same data range as the vector's column then runs r.colors for that temporary map. It then uses r.what.colors for each value found by and uploads it a new column in the vector map's attribute database.

It is planned that this script will be replaced with a C display module which renders thematic vector maps directly instead requiring the overhead of saving the colors into the DB.

If the target column name given by the rgb_column option does not exist, it will be created. The default name is "GRASSRGB".


Creating a random sample point map, query raster map values for those points, and colorize output:
# Spearfish dataset
g.region -d
v.random out=rand5k_elev n=5000
v.db.addtable map=rand5k_elev column='elevation double precision'
v.what.rast vector=rand5k_elev raster=elevation.10m column=elevation
v.colors map=rand5k_elev column=elevation color=bcyr

# See some GRASSRGB values: rand5k_elev | head -n 4

# display colorized points map
d.mon x0
d.vect -a rand5k_elev

Colorizing the roads map in Spearfish:

g.copy vect=roads,myroads
echo "1 red
2 yellow
3 orange
4 black
5 grey" > colors.txt

v.colors myroads column=cat rules=colors.txt

# display colorized roads map
d.mon x0
d.vect -a myroads

Colorizing a TIN (polygons) generated by v.delaunay:

# new columns for x,y,z of centroids
v.db.addtable map=tin \
   columns="east double precision, north double precision, height double precision, GRASSRGB varchar(11)"

# transfer geometry for colorizing (we need the centroid height) tin option=coor columns="east,north,height" tin

v.colors tin column=height rgb_column=GRASSRGB color=rainbow

# display colorized triangles
d.mon x0
d.vect -a tin


d.vect -z, r.colors, r.colors.stddev, r.what.color, v.db.addcol,, db.execute

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.


Hamish Bowman
Dunedin, New Zealand

Last changed: $Date$