So You Want To Make A Map?
Maps are one of the oldest mediums for presenting data and storytelling. There’s a burgeoning increase in data and concurrent lowering of thresholds to access software to make maps of that data. But there’s still one vital component in the recipe to making a great map — cartography. Making maps has become the modern equivalent of the shift from typewriter pools to word processing. It’s become a self-service proposition for many, as part of their jobs or simply as a way to show something interesting to others.
Making maps has become the modern equivalent of the shift from typewriter pools to word processing.
But cartography isn’t innate in our ability to communicate graphically. There’s a language, a syntax, and a grammar. It takes a little knowledge and some practice to know what works and how to make a map work well to mediate the message to the reader. In this article, I’m going to go through some of the choices you’re presented with in designing a thematic map (a map of a theme of data) and how they can help or hinder how people interpret it. It’s worth remembering that most people have no idea about how to understand the way in which the map and the choices made in making it affect their perception of it. You design the map to avoid as many of these potential pitfalls as possible by being a smarter mapmaker.
So let’s get going, and map one of the UN Sustainable Development Goals — employed people below the international poverty line. The data arrives at my desk as a flat spreadsheet. There’s a latitude column and another for longitude that locates a point which is our starting location for making the map. And there’s a value for each record in the spreadsheet (each country) that is the data we’re interested in mapping.
Below is the data’s latitude and longitude points when plotted on a default background map.
Each country gets one dot representing a spreadsheet entry of data on poverty at a national level. It’s really not very informative. Each dot is the same colour, size, and shape, and therefore, they look the same. Is poverty the same everywhere? Of course not, so we begin the task of teasing out something meaningful and we want to see our map show differences.
At this point you ask yourself what is it in the data you want to share, what message do you want to impart, and to whom? Well, it’s a general purpose map so there’s no specific user in mind (such as a map designed for children, or one that is specifically for economists) and that means a map that can be understood by someone interested in the topic.
The basic message the map needs to show is the spatial pattern of poverty, through the data that is being used as an indicator, and which acts as a proxy. It’s the national average of the number of people living below the international poverty line of $1.90 per day. We’ll make a map for both males and females and for all ages above 15.
And below is the first effort, a choropleth map that’s taken the values in our data and mapped them to the countries related to our original dots.
A choropleth map is one of the most common types of map. They’re relatively easily understood by people but this example isn’t. It’s more of a data dump. You’ll notice that only countries that, on average, fall below the poverty line have a symbol. The rest remain as the background grey of the basemap. But can you tell where countries exhibit higher, or lower, relative poverty? The answer should be a clear no and that’s to do with the colour scheme.
It’s impossible, perceptually, to determine highs and lows using a rainbow colour scheme where different colours (or hues) represent different classes in the data. How do we know if green is more or less than orange or vice versa?
The acid test of a good thematic map is whether you can compare places, relatively, without having to look at the legend. But even if you need a legend, a poor one with a terrible title, font and a ridiculous number of significant figures or decimal places (like the one above) is worse than not having one at all. Ultimately, this map is really having to make your map reader work hard to try and uncover anything meaningful. The next iteration, below, improves the colour scheme.
Not only is this a little less harsh on the eyes, but it’s also beginning to work on a cognitive level. People naturally see and interpret darker colours as ‘more’ on a map like this. In fact, we’ve now using a different component of colour called value and simply changing the same colour from light to dark where light is lower and dark is higher. So without even looking at the legend, we can see India has more relative poverty than elsewhere. The legend has been tidied up too to make the numbers more easily read.
The data has been classified into 5 classes and that’s a reasonably good choice when you want to show which countries share similar characteristics and where they differ with others. But this is an equal interval scheme that uses numbers found at an even space across the values in the data set as the class breaks. And for this data, it doesn’t do a good job of showing variation across the data. There are many different methods for classifying data and the important point here is to experiment and to pick (or modify) a classification scheme that reflects what it is you want to show in the map. The extreme version is an unclassed map where each area has its own colour, as shown by the next iteration of the map below.
While this can be helpful for picking outliers it doesn’t do much to identify countries with similar characteristics because each country has a different colour along the scale. It’s difficult to pick out where on the scale any one country sits. So let’s go back to a 5 class map, below, but you’ll see that the map looks different from the previous 5 class map.
We’ve added units to the legend and there’s more variation in shades across the map and that’s because we’ve used a Natural Breaks classification scheme instead of equal interval. A natural breaks scheme tries to look for gaps between clusters of values in a range that tend to be similar to one another. It’s a better default though it’s important to examine the distribution of each dataset and classify it appropriately to fit your message.
But there’s still a major problem with the map — it’s mapping totals and that’s a huge problem for perception and cognition. Areas differ in geographical size. Population totals amongst those areas also differ markedly. Some very small areas have huge populations, some large areas are sparse and vice versa. This all adds up to a problem for your map reader because they assume a homogenous baseline whereas, in fact, they are looking at a massively heterogeneous distribution of people and places, and one which they cannot quantify. You therefore have to account for those differences in designing the map to create a visual basis for comparing your mapped data from place to place.
For a choropleth map then, any data that you have as totals need to be converted to a rate or ratio e.g. per capita, or a percentage. Below, we see the map with exactly the same data but as a percentage of the total employed population.
The data has been normalised to provide a consistent baseline from place to place to allow visual comparison of places across the map. We can’t do much about unequally sized areas on a choropleth map (for that we could use a cartogram for instance) but we’ve done what we can to help the map reader.
On this map, Afghanistan and Thailand are rightly seen as highest and lowest in terms of the percentage of employed people living below the poverty line whereas on the previous totals map we’d ‘see’ India and Montenegro and highest and lowest. The reason for that is largely because they are also the highest and lowest population totals.
OK, let’s tidy up a few other things because this is still looking a bit like a rough sketch of a map. The map below retains the basic structure — 5 natural break classification scheme, good symbology, and normalised data but it also now approaches design in aesthetic terms.
Much cleaner. Much more visually appealing. So what have we done? Here are ten ways in which we’ve modified the appearance of the map to improve its appearance and which works to clarify the map’s message.
- Removed the basemap — a choropleth is its own basemap so there’s often little need for any other background detail.
- Changed the fonts — avoid ornate or odd looking fonts and use a little transparency in the halo to help it sit across different backgrounds. There’s a time and a place but on a map like this, you don’t need Comic Sans or Papyrus (honestly!).
- Made legend text smaller and change to dark grey. Made the title larger and simplified it because no-one wants a verbose title.
- Made the international borders recede — there’s no need for black so, instead, we’ve used light grey. this helps in promoting the content, not the structure of the geography.
- Made sure graphic elements like the title and legend are aligned, here to the same imaginary vertical line.
- Added a note to clarify the precise data used to make the map — it’s better here than in the title.
- Add a source for the data so someone could verify it if necessary, or even go and get it to make their own map or alternative work with it.
- Added labels to aid interpretation — you can’t add them all (especially on a small world map like this) but you can add a few for context and they can progressively reveal in web maps.
- Designed relevant popups or rollovers for web map delivery. Popups are excellent ways to supply your reader with more context, more detail, and information. Interactivity also invites exploration.
- You don’t need a scale bar or north arrow on these type of small scale maps. They’re just superfluous and the basic tenet of cartography applies — remove as much as you can while still providing clarity and legibility for your map reader.
It looks pretty good, right? And a good looking map is not just about making it pretty — it helps bring eyes to your work and encourages people to want to spend more time with it. But maps lie and there’s one major remaining change we need to make — the projection. Below is the same map in a different projection.
Here, we’re using the Eckert IV equal area projection. Why?
It shows countries in relative equal area which is hugely important for helping our eyes and brains properly interpret the amount of ‘colour’ across the map from place to place. We’ve already seen how not normalising the data can add visual incongruities into the map, and we don’t want the choice of map projection to do the same after going to all that effort.
Web Mercator is a poor choice for small scale thematic maps because of the hideous distortions in size and shape of areas further north or south of the equator. An equal area projection corrects for this distortion and does exactly what it says on the tin — makes sure areas are displayed equally compared to one another wherever they are on the map.
And it just looks better!!!
But is it the best? And look at how that little bit of Russia pokes its way onto the top left of the map as the anti-meridian splits at an awkward position. It’s a small issue but one that can be corrected easily. The map below makes the correction.
The map is now centered on 12° East which means that little bit or Russia in the top left now joins to its landmass in the top right. And did you notice the projection change again? No, well it did, but not by much.
The map now uses a brand new projection developed by Bernie Jenny, Bojan Savric and Tom Patterson — Equal Earth Projection which is now supported on many platforms. Whether you use one equal area projection or another starts to get into the realms of personal choice.
So that’s pretty good as the final map eh? Well yes, but choropleths aren’t the only choice and not even always the best choice so let’s take a look at a few other commonly used mapping techniques. Below is the same data presented as a proportional symbol map.
The proportional symbol map is a pretty good choice and a map type where you can use raw totals as your data input. The geography is simply a framework and the symbol itself is scaled according to the data value so the visual comparison is inherent in the symbol’s area. Larger = more.
We’ve used contrast to help the symbols become the focus and the background recede. We’ve also switched the background grey from meaning above the poverty line to just being the background colour of the countries we’re mapping. The countries that are above the poverty line are now shown in white. It’s a subtle change but supports this map type better.
A big problem with proportional symbol maps is overlaps. Try to avoid too many overlaps — a little transparency can help as can a light symbol border though beware too many overlaps as it can bring unwarranted attention to an area where the symbology looks more saturated when in fact it’s just a function of large symbols overlapping. Remember darker is often seen as more, and overlaps do not mean more in this map type.
Moving on, below is another alternative, the dot density map.
A dot density map is also a good solution. Again, you can stick to using totals. Each dot = a data value, here 100,000 people per dot. So the problems of unequally sized geographies are dealt with by the natural density of the pattern of dots themselves.
Again, we use contrast to give focus to the symbols — this helps not only in print or on the web, but particularly when projected in a large room. Always consider the conditions in which the map is to be displayed because it feeds into the design. Projectors tend to wash out the colour on maps so you can definitely go more saturated.
And what about the heat map below? It’s a popular choice but it’s fraught with problems.
In this heat map, the totals, mapped at points representing the centre of each country are used as a basis for interpolation — it’s effectively a density surface so the proximity of points fundamentally impacts the map.
The size of the kernel (area over which the algorithm includes or excludes values for the purposes of interpolation) also plays a huge part — here it’s way too big so you get a smoothed blob that’s really not very helpful. It also shows poverty as seeping way into seas and oceans which doesn’t make much sense.
And the colour — this map uses an awful default which leads to myriad perceptual problems of assessing high/low (light is higher on this!) and also introduces fake visual stops among the gradient of continuous colours
Also — dense and sparse poverty is mentioned in the legend? What does that actually mean? And the legend is way too small to see colour changes anyway. But as with most maps the heat map is not without redemption with a little careful design as we can see in the version below.
The version of the heat map above uses a smaller kernel, better colours (plasma, which returns us to the light-dark meaning). We’ve also constrained the interpolation to the land which makes a better map because poverty doesn’t happen at sea in this context. And finally, even though we’re using a continuous colour scheme we’ve introduced contouring on the map. It sometimes helps the eye move from one area to the next and see where bands of the same colour (and underlying data values) exist. Finally, the legend is larger and the spurious title of ‘density’ has been replaced.
There are still some problems though which are hard to deal with — because any interpolated surface is based on a value that is held at a point there’s an inevitable focus around that point. Take India for instance — we already know it has the highest number of people that are below the poverty line but is the focus really there, right in the centre of the country? No — that’s just where the data point exists. Move it and the focus shifts. This may be important in ensuring people do not misinterpret the ‘where’ in your data.
Throughout all these maps grey simply means a country that, on average, is above the poverty line, but that doesn’t mean that everyone within that country lives above the poverty line. What maps leave off is often just as important. And what scale the map is shown at also likely hides information at a finer resolution.
Take the Republic of Ireland shown in the map below. As a country, the national average places the population above the international poverty line (grey on the maps we’ve seen so far). But at a larger scale with more detailed data we clearly see that there’s considerable variation in poverty levels within the country.
This map of the Republic of Ireland shows the average level above and below the poverty line using differently coloured proportional symbols. It’s multivariate because the symbol encodes multiple pieces of information through the design of the symbols
More intense green = more affluent
More intense pink = less affluent.
It also shows the population size as a proportional symbol.
So — scale matters. You can’t assume a similar issue with every single country on the small scale country-level map. Digging into the detail will always give you a richer picture and, often, more space to make a more detailed and interesting map.
Finally, let’s just take a look at our first choropleth map once again, but in 3D, because often, 3D becomes a fancy approach that is difficult to ignore when you want to capture people’s attention. Below is the poverty choropleth on a virtual globe with two viewing angles.
On this virtual globe version, the countries are shaded like a choropleth map showing % below the poverty line, and also extruded by the total number of people. In theory, a good approach to show two components of the data and another type of multivariate map.
Except the 3D globe leads to occlusion, foreshortening, prisms at different angles, and hence difficulties interpreting heights — as these two views of the same data show. Just look at India on the two globes above to see the different impressions we might make from the different viewing angles.
Spiky data balls look inviting, and if they are interactive some of the difficulties can be accommodated through rotation and popups but they present readers with real difficulties in interpretation. Avoid if you can.
Below is a better version — still 3D but in perspective mode on a flat surface.
On the above 3D perspective map there’s still a problem with foreshortening because objects in the foreground are larger than those in the background so they take visual prominence. This difference in vertical scale across the map can impact people’s estimation of the height of prisms and the values of data they represent.
The same problem applies to any tilted map and hinders visual comparison of objects in the foreground against those in the background. The map reader can easily make weak or misguided assessments. But we can accommodate this in one final map below.
The map above uses an isometric (parallel) projection meaning that scale is equal in all directions across the entire 3D view. It means each prism is visually comparable with one another wherever it appears on the map. The height of a prism in the foreground is in the correct proportion to all prisms elsewhere on the map so they can be visually compared to one another. We can also add a legend to assist in interpreting the prism height to population total.
That then is a brief look at some common ways in which we can turn a simple dataset into a well-meaning and well-designed map. Along the way we’ve looked at a few alternative thematic map types, some of the pitfalls to avoid, and tips that can make them work more effectively. There are plenty more ways to make thematic maps but this mini-guide will hopefully get you started. The idea isn’t to follow a formula, but simply to be aware of the many different aspects of designing a map so that you can be a smarter mapmaker, make a better map, and allow your map reader to understand it more easily.