Let’s Improve That Map

My personal best practices for better map design

--

For the Vermont Center for Geographic Information “GeoEnlightenment” series, I was asked to share my personal cartography tips and tricks. To highlight my approach to designing maps, I decided to take the audience through a bad-to-better evolution of a new map.

In this post, we’ll focus on making a useful election results map for Vermont. I’ll post direct links to data sources as I go through the process.

Disclaimers:

  1. These are my best practices, not necessarily the only best practices.
  2. I used ArcGIS Pro and Excel, but the design tips are software agnostic.
  3. I did not conclude with the best possible map, so feel free to improve!
  4. I did not try to start with a bad map, just a generic, uninspired one.

Version 1 — Results by State

This one is mostly tongue-in-cheek

Here we see very little attention paid to the design of the map. It has almost no customization applied. Built-in colors are selected, as are generic (and unnecessary) layout elements.

However, this map does communicate the most basic level of information necessary for an election results map.

Data:

State Boundary: Natural Earth Data

.

.

.

.

Version 2 — Results by County

Let’s give the map viewer more details. The data provided by the Secretary of State has more specific election results than just the whole state results, so let’s put that data to use.

Slightly less tongue-in-cheek

We’ve upped our game slightly! Now we have much more detail than before. We’ve gone from 1 data point (statewide result) to 14 (county-level results). That’s a 14x improvement in data density!

But we still don’t give the viewer very much information.

Data:

County Boundaries: VCGI GeoData Portal

Election Results: Secretary of State Election Archive (used throughout)

.

.

Version 3 — Results by Town

No more joking, let’s share the real election data. Now we’re up to 255 data points, a 1,720% improvement! We’ve reached the most detailed administrative boundary in Vermont, so we’re done, right?

We’re communicating the results fairly well, but we can do better visually. Right now, the layout is still largely unchanged from the first map. Let’s make better use of the page.

Data:

Vermont Towns: VCGI GeoData Portal

.

.

.

.

.

.

Version 4 — Improved Town Layout

Here we drop several unnecessary elements and punch up some other ones.

The map should take up as much of the page as possible, so we stretch the map frame all the way to the page border.

The title doesn’t have to be at the top, so we make it larger make use of the geography and nest it to the right.

The content of this map is so simple that we can avoid the default legend and make a custom one with just a few layout shapes.

Unnecessary elements dropped (and the rationale):

  • Scale bar (Will anyone get out a ruler and measure things on this map?)
  • North arrow (Does this map defy the near-universal north-up convention?)
  • Neatline (Does the map need to be visually separated from other content on the page to avoid confusion?)

Version 5 — Improved Colors

Let’s ditch the default colors provided by the software and find something more aesthetically pleasing. That pure red and blue and black are just unnatural and harsh on the eyes.

Instead of trying to create a color palette on my own, let’s go to the design community for some inspiration.

Coolors.co is one (of many) tools out there to help you pick a beautiful palette.

Because Vermont isn’t an island, I’m also adding relevant reference information like the bordering states, Lake Champlain, and major towns to help viewers situate themselves.

Data: VCGI Towns, Lake Champlain, NaturalEarth Admin-1

Version 6 — Vote Percent

Let’s provide more context to the election results. Sure, elections are binary, winner-takes-all, but we can use the data to shed some nuance on the situation.

By calculating the percent of votes received in each town, we can color the towns to indicate the winner’s margin of victory.

Notice that Trump/Clinton have matching breaks up to 60%, with Clinton having her own, darker blue color to represent margins up to 85%. This choice was deliberate to avoid conflating a Trump 60% win to a Clinton 85% win. I wanted the larger win to have a larger visual impact.

.

Version 7 — Value By Alpha

We’ve made a ton of progress communicating more nuance about our information, but let’s take it a step farther. A 60% win in a small town is very different than a 60% win in a large town.

Here we use a technique called Value By Alpha. This uses a value field, in this case population, to set a transparency to the colors. The result is low-population towns fade towards white, while the highest populations remain fully shaded.

Technique Credit: Kenneth Field @ Esri

.

.

Version 8— Precinct Value By Alpha

Let’s change up the geography one more time. Voting in Vermont is conducted at the municipality level, but the winner is decided at the Voting Tabulation Area. VCGI discusses this in more detail here.

The value of using the Voting Tabulation Area is that large population centers like Burlington and Rutland are subdivided into “wards”, allowing us to have more detail in those spaces. Consequently, sparsely populated areas are merged, so we no longer have empty spots on our map where no one casts votes.

Data: election-geodata on Github via Bill Morris

What do you think?

Did I make a better map? How would you do it differently? Let me know here or on Twitter.

--

--