Отображение фоновой карты на пузырьковом графике с координатами не по широте или долготе в R - PullRequest
0 голосов
/ 19 июня 2019

Я работал над созданием пузырьковых графиков концентрации для набора данных Meuse в R и смог получить график с координатами восток и север , как показано здесь .Код, который я использовал в качестве шаблона для создания своего графика, взят с этой страницы: https://www.r -bloggers.com / stamen-maps-with-spplot / .Когда используется функция get_map (), мы должны работать с долготой и широтой, и я могу преобразовать свой набор данных в эту систему проекций, чтобы получить правильную карту.Однако что мне нужно делать, если я хочу вставить карту поверх моего исходного пузырькового графика?

library(sp)
data(meuse)
coordinates(meuse) = ~x+y
proj4string(meuse)<-CRS("+init=epsg:28992")
meuse.4326 <- spTransform(meuse, CRS("+init=epsg:4326"))
bbPoints <- bbox(meuse.4326)
gmap <- get_map(c(bbPoints), zoom=11, maptype='watercolor', source='stamen', crop=FALSE)
## Bounding box of the map to resize and position the image with grid.raster
bbMap <- attr(gmap, 'bb')
##ll is lower left, ur is upper right
ll.lat<-bbPoints["x","min"]
ur.lat<-bbPoints["x","max"]
ll.lon<-bbPoints["y","min"]
ur.lon<-bbPoints["y","max"]
latCenter <- with(bbMap, ll.lat + ur.lat)/2
lonCenter <- with(bbMap, ll.lon + ur.lon)/2
height <- with(bbMap, ur.lat - ll.lat)
width <- with(bbMap, ur.lon - ll.lon)

## Use sp.layout of spplot: a list with the name of the function
## ('grid.raster') and its arguments
sp.raster <- list('grid.raster', gmap,
                  x=lonCenter, y=latCenter,
                  width=width, height=height,
                  default.units='native')

####Getting bubble plots of concentration
breaks <- c(100,400,800,1500,2000)
classes <- cut(meuse$zinc, breaks)
meds <- tapply(meuse$zinc, classes, FUN=median)
sizes <- (meds/max(meds))^0.4 * 1.8

## Finally, the spplot function
spplot(meuse["zinc"],
       cuts = breaks,
       col.regions=brewer.pal(n=5, 'YlOrRd'),
       cex=sizes,
       edge.col='black', alpha=0.5,
       scales=list(draw=TRUE), key.space='right',
       main="Zinc concentration plot (mg/kg)",
       xlab="Easting",ylab="Northing")


...