ggmap с наложенным geom_map

library(sp)
library(spdep)
library(ggplot2)
library(ggmap)
library(rgdal)

Получить и повозиться с данными:

nc.sids <- readShapePoly(system.file("etc/shapes/sids.shp", package="spdep")[1],ID="FIPSNO", proj4string=CRS("+proj=longlat +ellps=clrk66"))
nc.sids=spTransform(nc.sids,CRS("+init=epsg:4326"))

Получить фоновую карту с stamen.com, построить, выглядит красиво:

ncmap = get_map(location=as.vector(bbox(nc.sids)),source="stamen",maptype="toner",zoom=7)
ggmap(ncmap)

Создайте фрейм данных с долготой, широтой, Z и нанесите на карту и пустой график:

ncP = data.frame(coordinates(nc.sids),runif(nrow(nc.sids)))
colnames(ncP)=c("long","lat","Z")

ggmap(ncmap)+geom_point(aes(x=long,y=lat,col=Z),data=ncP)
ggplot()+geom_point(aes(x=long,y=lat,col=Z),data=ncP)

присвойте ему несколько уникальных идентификаторов, называемых «id», и обогащайте его (витаминами и железом?)

nc.sids@data[,1]=1:nrow(nc.sids)
names(nc.sids)[1]="id"
ncFort = fortify(nc.sids)

Теперь, моя карта и мои пределы, я хочу построить 74 уровень рождаемости:

myMap = geom_map(aes(fill=BIR74,map_id=id),map=ncFort,data=nc.sids@data)
Limits = expand_limits(x=ncFort$long,y=ncFort$lat)

и на пустом графике я могу :

ggplot() + myMap + Limits

но на ggmap не могу:

ggmap(ncmap) + myMap + Limits
# Error in eval(expr, envir, enclos) : object 'lon' not found

Некоторые версии:

> packageDescription("ggplot2")$Version
[1] "0.9.0"
> packageDescription("ggmap")$Version
[1] "2.0"

Я могу добавить geom_polygon в ggplot или ggmap и он работает как положено Значит что-то не так с geom_map....

10
задан Spacedman 7 June 2012 в 16:08
поделиться