Created

Embed URL

HTTPS clone URL

SSH clone URL

You can clone with HTTPS or SSH.

Download Gist

basic map

View basicmap.r
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
doInstall <- TRUE
toInstall <- c("maps", "ggplot2")
if(doInstall){install.packages(toInstall, repos = "http://cran.us.r-project.org")}
lapply(toInstall, library, character.only = TRUE)
library(ggplot2)
library(maps)
 
Prison <- read.csv("http://www.oberlin.edu/faculty/cdesante/assets/downloads/prison.csv")
head(Prison)
 
all_states <- map_data("state")
all_states
head(all_states)
Prison$region <- Prison$stateName
Total <- merge(all_states, Prison, by="region")
head(Total)
Total <- Total[Total$region!="district of columbia",]
 
 
 
p <- ggplot()
p <- p + geom_polygon(data=Total, aes(x=long, y=lat, group = group, fill=Total$bwRatio),colour="white"
) + scale_fill_continuous(low = "thistle2", high = "darkred", guide="colorbar")
P1 <- p + theme_bw() + labs(fill = "Black to White Incarceration Rates \n Weighted by Relative Population"
,title = "State Incarceration Rates by Race, 2010", x="", y="")
P1 + scale_y_continuous(breaks=c()) + scale_x_continuous(breaks=c()) + theme(panel.border = element_blank())

Thanx for the write up. FYI, CSV file does not exist anymore. But I got what I was looking for.

Great!

Thanks!

Thank you!Really nice example. I would suggest that first remove the 'district of columbia' and later merge the data. Remove after merging in some datasets give some anomalies to the visualization.

I had to make a few tweaks to my code to get this to work.

For example, instead of:
Total <- merge(all_states, Prison, by="region")
I had to do:
Total <- merge(all_states, Prison, all=TRUE)

However, after doing that, my map had a bunch of lines running through it. To fix it, I found the following to be helpful (tweaked from http://stackoverflow.com/questions/23714052/ggplot-mapping-us-counties-problems-with-visualization-shapes-in-r):

#*****************
loading packages
#*****************
#for maps
library(maps)
#help(package="maps") #help files if needed

#for plotting data
library(ggplot2)
#help(package="ggplot2") #help files if needed

#this package loads tables faster than merge
library(data.table)
#help(package="data.table") #if you need help with the package later

#to get fancy colors for graphing
#can see some color palettes here: http://moderndata.plot.ly/wp-content/uploads/2015/04/seq-300x211.jpg
library(RColorBrewer)
#help(package="RColorBrewer") #if you need help with the package later

##******************
#Matching state map data frame to Prison data frame
#********************
#setting keys to match the two data frames (all_states and Prison)
all_states <- data.table(map_data('state'))
setkey(all_states,region)
Prison <- data.table(Prison)
setkey(Prison,stateName)
#now merging the two data frames together based on those keys
map.df <- all_states[Prison]

#*************************
#now creating the state map
#**************************
ggplot(map.df, aes(x=long, y=lat, group=group, fill=bwRatio)) +
scale_fill_gradientn("",colours=brewer.pal(9,"GnBu"))+
geom_polygon()+coord_map()+
labs(fill="Black to White Incarceration Rates \n Weighted by Relative Population",
title="State Incarceration Rates by Race, 2010",x="",y="")+theme_bw()

Amanda, where did you find the prison data?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.