Привет, сообщество stackoverflow!Choropleth map with R using shp file
Может кто-то любезно, пожалуйста, помогите мне, поскольку у меня возникают некоторые трудности с созданием карты choropleth в R. На данный момент я назначил LL-информацию в мои достопримечательности, и теперь я хочу создать карту choropleth, используя переменная «cans» в наборе данных (data.csv) по району средней школы (highdist_n83.shp.zip). Я хотел бы, чтобы вы знаете, как правильно заполнить карту суммой банок на районную площадь. Я предоставил код, который извлекает примерный файл данных из dropbox и файл формы, который я хотел бы использовать.
EDIT К сожалению, я забыл добавить, что, когда я сюжет только файл формы, я могу видеть, что это оказывается через ggplot. Однако, когда я пытаюсь «заполнить» районы, используя число переменных «cans», R некоторое время висит перед тем, как отобразить то, что кажется массой линий над исходной фигурой. Интересно, если ошибка происходит из-за следующие возможные причины
- файла форма не является хорошим
- может быть проблемой с тем, как я сливая кадр данных и файл формы, как я заметил, дополнительным строки добавляются в объединенный файл
- В области есть несколько школ, которые я не комбинировал при использовании ddply.
Благодарим вас за внимание!
###load R scripts from dropbox
dropbox.eval <- function(x, noeval=F) {
require(RCurl)
intext <- getURL(paste0("https://dl.dropboxusercontent.com/",x), ssl.verifypeer = FALSE)
intext <- gsub("\r","", intext)
if (!noeval) eval(parse(text = intext), envir= .GlobalEnv)
return(intext)
}
##pull scripts from dropbox
dropbox.eval("s/wgb3vtd9qfc9br9/pkg.load.r")
dropbox.eval("s/tf4ni48hf6oh2ou/dropbox.r")
##load packages
pkg.load(c(ggplot2,plyr,gdata,sp,maptools,rgdal,reshape2))
###setup data frames
dl_from_dropbox("data.csv","dx3qrcexmi9kagx")
data<-read.csv(file='data.csv',header=TRUE)
###prepare GIS shape and data for plotting
dropbox.eval("s/y2jsx3dditjucxu/dlshape.r")
temp <- tempfile()
dlshape(shploc="http://files.hawaii.gov/dbedt/op/gis/data/highdist_n83.shp.zip", temp)
shape<- readOGR(".","highdist_n83") #HDOE high school districts
[email protected]
shape2<- spTransform(shape, CRS("+proj=longlat +datum=NAD83"))
data.2<-ddply(data, .(year, schoolcode, longitude, latitude,NAME,HDist,SDist), summarise,
total = sum(total),
cans= sum(cans))
coordinates(data.2) <-~longitude + latitude
shape2.df<-fortify(shape2)
mshape2.df<- merge(shape2.df,[email protected], by.x="id", by.y="ID",all=TRUE)
newdata <- merge(mshape2.df,data.2, by.x="NAME", by.y="NAME", all=TRUE)
newdata <- newdata [order(newdata $order),]
###choropleth map:
mapPlot <- ggplot(newdata,aes(x=long, y=lat,drop=FALSE)) +
geom_polygon(aes(fill=cans, drop=FALSE), colour = "black", lwd = 1/9,na.rm=FALSE)
+ ggtitle("Total of Cans Across State")
print(mapPlot)
Спасибо за код. Прежде чем мы начнем, вы можете сказать нам, в чем проблема, и/или включить скриншот. Получаете ли вы предупреждающее сообщение, или это не заговор или заговор неправильный? и т. д. – SlowLearner
Hi SlowLearner. Я отредактировал свое оригинальное сообщение, чтобы описать проблему, которую я испытываю. Это довольно долго, но я надеюсь, что это может прояснить, с чем мне нужна помощь. После запуска ggplot-кода R в основном зависает некоторое время, прежде чем отображать то, что выглядит массивным количеством строк над файлом формы. Я перечислил некоторые возможные проблемы, но опять же я полный новичок в этом деле ... Еще раз спасибо за ваше время! :) – user2300643