Togaware DATA MINING
Desktop Survival Guide
by Graham Williams
Google

Map Displays

Map displays often provide further insights into patterns that vary according to region. In this plot we illustrate some basic colouring of a map. This can be used to translate a variable into a colour which is then plot for the state. We use the rainbow function to generate the bright colours to use to colour the states.

Image map-australia-states


library(maptools)
aus <- readShapePoly("australia.shp")
plot(aus, lwd=2, border="grey", xlim=c(115,155), ylim=c(-35,-20))
colours <- rainbow(8)
# Must be a better way than this....
nsw <- aus; nsw@plotOrder <- as.integer(c(2)); plot(nsw,col=colours[2],add=TRUE)
act <- aus; act@plotOrder <- as.integer(c(1)); plot(act,col=colours[1],add=TRUE)
nt  <- aus; nt@plotOrder  <- as.integer(c(3)); plot(nt, col=colours[3],add=TRUE)
qld <- aus; qld@plotOrder <- as.integer(c(4)); plot(qld,col=colours[4],add=TRUE)
sa  <- aus; sa@plotOrder  <- as.integer(c(5)); plot(sa, col=colours[5],add=TRUE)
tas <- aus; tas@plotOrder <- as.integer(c(6)); plot(tas,col=colours[6],add=TRUE)
vic <- aus; vic@plotOrder <- as.integer(c(7)); plot(vic,col=colours[7],add=TRUE)

http://rattle.togaware.com/code/map-australia-states.R

Here's a great example using the ggplot2 package, based on examples from http://www.thisisthegreenroom.com/2009/choropleths-in-r/. These plots are called choropleths.



> library(ggplot2)
> library(maps)
> # Dowload and clean up the data to plot
> 
> # unemp <- read.csv("http://datasets.flowingdata.com/unemployment09.csv")
> unemp <- read.csv("unemployment09.csv")
> unemp_data$counties <- tolower(paste(states,counties,sep=","))
> countyNames <- sapply(as.character(unemp_data$CountyName),strsplit,", ")
> counties <- sapply(countyNames ,"[",1)
> states <- sapply(countyNames ,"[",2)
> states <- as.character(stateAbbr[states,2])
> #parse out county titles & specifics
> unemp_data$counties <- sub(" county","",unemp_data$counties)
> unemp_data$counties <- sub(" parish","",unemp_data$counties)
> unemp_data$counties <- sub(" borough","",unemp_data$counties)
> unemp_data$counties <- sub("miami-dade","dade",unemp_data$counties)
> #define color buckets
> colors = c("#F1EEF6", "#D4B9DA", "#C994C7", "#DF65B0", "#DD1C77", "#980043")
> unemp_data$colorBuckets <- as.factor(as.numeric(cut(unemp_data$unemp,c(0,2,4,6,8,10,100))))
> # Extract the reference data
> 
> mapcounties <- map_data("county")
> mapstates <- map_data("state")
> # Merge the data with ggplot county coordinates
> 
> mapcounties$county <- with(mapcounties , paste(region, subregion, sep = ","))
> mergedata <- merge(mapcounties, unemp, by.x = "county", by.y = "counties")
> mergedata <- mergedata[order(mergedata$order),]
> #draw map
> map <- ggplot(mergedata, aes(long,lat,group=group)) + geom_polygon(aes(fill=colorBuckets))
> map <- map + scale_fill_brewer(palette="PuRd") + coord_map(project="globular") + opts(legend.position = "none")
> #add state borders
> map <- map + geom_path(data = mapstates, colour = "white", size = .75)
> #add county borders
> map <- map + geom_path(data = mapcounties, colour = "white", size = .5, alpha = .1)
> map



Copyright © Togaware Pty Ltd
Support further development through the purchase of the PDF version of the book.
The PDF version is a formatted comprehensive draft book (with over 800 pages).
Brought to you by Togaware. This page generated: Sunday, 22 August 2010