Choropleths Made Easy!

March 5, 2011
By

(This article was first published on My Experiments with R, and kindly contributed to R-bloggers)

Winner4

Choropleth Maps are very useful to visualize spatial trends. There have been several blog posts providing detailed instructions on how to create a choropleth map in R using map, spplot and ggplot2. However, I believe that the process of creating a choropleth should be even simpler given the power of R. Hence I set out to create a generic function to plot choropleths. 

I think it would be useful to share my design principles before I step on to my code. In my mind, it should be possible to quickly draw a choropleth map by specifying the following inputs:

  1. poly       => shapefile containing the map
  2. df          => data file containing the info 
  3. id1, id2  => names to merge poly and df
  4. field       => value variables to plot
  5. colpal    => color palette
  6. ...          => inputs to create data bins

Example 1

Let us consider a simple example to illustrate this principle. I am going to use a recent choropleth map created in the Offensive Politics blog to visualize the percentage of votes secured by the winning candiate Rahm Emanuel in the Chicago Mayoral Elections.

https://gist.github.com/856648

The plotChoropleth function essentially takes the grunt work out of constructing a choropleth map once the data has been loaded and cleaned, and produces the plot shown below.

Emanuel

Example 2

Suppose, we want to visualize vote pcts of both Rahm Emanuel and Gery Chico. The plotChoropleth function automatically creates facets when it is provided more than one field variable to plot.

https://gist.github.com/856673

Chico_emanuel

Example 3

The flexibility does not end here. Let us suppose, we want to visualize the pct of votes secured by the winner of each precinct. Such a plot was created by the Chicago Tribune . In this plot the palette used for each candidate is different. We can create this plot, by additional processing on the election results data, and directly passing the fill color for each precinct to the plotChoropleth function. This produces the plot on top of this page after a few extra lines of code to set the legend right.

https://gist.github.com/856685

Example 4

Finally, in some cases, the shape file already has the data to be plotted. Let me illustrate this case with an example on London Sport Participation drawn from the Spatial Analysis blog. When a data file is not specified, the plotChoropleth function assumes that it is contained in the shape file and proceeds with it as default.

https://gist.github.com/856695


London_sport

I am in the process of cleaning up my code and putting them on github as a downloadable repository. I would be glad to get feedback and comments on how I can improve this further.


 


 

Permalink| Leave a comment  »

To leave a comment for the author, please follow the link and comment on his blog: My Experiments with R.

R-bloggers.com offers daily e-mail updates about R news and tutorials on topics such as: visualization (ggplot2, Boxplots, maps, animation), programming (RStudio, Sweave, LaTeX, SQL, Eclipse, git, hadoop, Web Scraping) statistics (regression, PCA, time series, trading) and more...



If you got this far, why not subscribe for updates from the site? Choose your flavor: e-mail, twitter, RSS, or facebook...

Comments are closed.