Choropleth values plotting incorrectly
On Fri, 19 Jul 2013, Justine Sumrok wrote:
Hi all, I ran into a spot of trouble today plotting a map of free and reduced lunch students (FRL) in Ohio. linked are: https://drive.google.com/folderview? id=0ByHQd1ckVHrSTURXeU5MczgzWDQ&usp=sharing shapefile of school districts in Ohio csv of the district data Using the code below I created a choropleth map of Ohio, though the fill in certain school districts was incorrect. For example: according to my csv of data Cleveland Municipal would be in the highest bracket of FRL population, but is not displaying that color. Any thoughts?
Thanks for example data. Never use merge(), it always masks trouble. Never
assign directly to the data slot, always use spCbind() in maptools. You
have multiple problems. You have 616 entities in your shapefile, but only
601 of these are in the CSV file (which has 768 observations) - this based
on using match() on character representations of NCESID - it is a factor
in OH, but integer in dist. So you have a two-way matching problem. You
can maybe address it by first removing the 15 entities from OH for which
you have no data, then dropping from dist the IDs that do not match, and
finally spCbind() after checking that row.names(OH) and row.names(dist)
agree. I started by:
row.names(OH) <- as.character(OH$NCESID)
dist$NCESID <- as.character(dist$NCESID)
row.names(dist) <- dist$NCESID
to remove the possibility that the different representations were getting
in the way. I don't know what you'll choose to do with the IDs in OH foe
which you have no data, so I'll leave this here for now.
See the vignette("combine_maptools") in maptools for more ideas.
Hope this helps,
Roger
#Libraries
library(maps)
library(maptools)
library(RColorBrewer)
library(class)
library(classInt)
#Reading in data
state <- readShapePoly('/Users/Path/to/File/Census2010')
dist <- read.csv('/Users/Path/to/File/Dist.csv', header = T)
#Merging Data
OH <- state
OH at data <-
merge(OH at data, dist, by.x="NCESID", by.y="NCESID", all.x=F, sort=F )
#Plotting FRL by district
plotvar <- OH at data$PctFRL
nclr <- 5
plotclr <- brewer.pal(nclr, "GnBu")
class <- classIntervals(plotvar, nclr, style = "fixed",
fixedBreaks = c(0, 0.40, 0.60, 0.80, 0.90, 1))
legend("bottomleft", legend=names(attr(colcode, "table")),
fill=attr(colcode, "palette"), cex=0.6, bty="n")
Thanks!
[[alternative HTML version deleted]]
_______________________________________________ R-sig-Geo mailing list R-sig-Geo at r-project.org https://stat.ethz.ch/mailman/listinfo/r-sig-geo
Roger Bivand Department of Economics, NHH Norwegian School of Economics, Helleveien 30, N-5045 Bergen, Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43 e-mail: Roger.Bivand at nhh.no