Visualising topography

Here is the topography slideshow, otherwise read on..

Over the past few years I’ve been looking at lots of relief maps – i.e. those showing geographical topography, specifically land elevation, and I’m generally struck by two things. Firstly how the colour schemes commonly used seem too dominant, which seems to reduce the brain’s capacity for interpreting the geographical features being depicted. Here are the top Google Image hits for ‘world elevation map’:

Top Google hits for "world elevation map"

Top Google hits for “world elevation map”

The second point relates to generally better maps that have been made with more concern for conveying information effectively – namely that many seem very bland, especially at small scale (wide area). Ergo, perhaps, the popularity of rainbow colours. This is partly because the colour scales are typically mapped directly (linearly) to the data range, which for the world topography ranges from 8,848m up (Sagarmatha) to 10,911m down (Mariana Trench). Here’s how it breaks down in a density plot – as you can see most of the action is between 3-6 kms down and 0-1 km up.

Density distribution of global topography (bathymetry and elevation)

This means that linear mapping of colour to the data range will compresses most of the map into much narrower colour bands, meaning less visual contrast, as in this example (despite separate grey-scale schemes for land and sea):

From the Earthguide Geosciences website

From the Earthguide Geosciences website

So I decided to try mapping the data quantiles to colour instead, a pretty common technique used in choropleth mapping and other techniques that look at more statistically complex data. I’ve used the bathymetric datasets kindly made available by the British Oceanic Data Centre on behalf of the General Bathymetric Chart of the Oceans (GEBCO)*. Quantiles are typically used in fairly small numbers, but there is no constraint upon how many can be used beyond the limits of visual perception and computational costs. I’ve chosen 256 quantiles to use the full capacity for a single colour range using 2 character hexadecimal 00-ff notation. To avoid a grey washout I’ve chosen an upper end colour of light cyan (“#55FFFF”) because it’s bright, not too sickly, and slightly reminiscent of the BSG Viper pilots’ in-helmet lighting. I apply these slightly counter-intuitively to show deepest areas brightest as I found that this generates some nice cloud-like effects. The results are pretty impressive:


The colours are made to reflect the data in a much more qualitatively useful way, which helps to emphasise the shapes and extents of geological features.


I’ve created a map slideshow of some of the world’s most interesting (to me) regions and geological features. Check it out here.

The maps were made uber-easily in R using base plot functions. For instance:

breaks = quantile(volcano, seq(0, 1, length.out=256))
cols = colorRampPalette(c("#55FFFF", "grey10"))(255)
image(volcano, col=cols, breaks=breaks, axes=F, asp=T)

You can try it out here:

* [edit] I should credit me nugget for the code to read/parse the GEBCO data into R for plotting.