我想解决以下问题.我使用ggplot2绘制一个岛屿的地图:
island = get_map(location = c(lon = -63.247593, lat = 17.631598), zoom = 14, maptype = "satellite") islandMap = ggmap(island, extent = "panel", legend = "bottomright") RL = geom_point(aes(x = longitude, y = latitude), data = data, size = 4, color = "#ff0000") islandMap + RL
RL点的坐标:
data = data.frame( ID = as.numeric(c(1:8)), longitude = as.numeric(c(-63.27462, -63.26499, -63.25658, -63.2519, -63.2311, -63.2175, -63.23623, -63.25958)), latitude = as.numeric(c(17.6328, 17.64614, 17.64755, 17.64632, 17.64888, 17.63113, 17.61252, 17.62463)) )
现在的问题是,当我使用zoom = 13时,岛上的岛太小了,当我使用zoom = 14时,它完全居中.但是当我绘制RL点时,两个被切断,因为它对东方太多而另一个对西方来说太过分了.我使用边界框查看了一些类似下面的解决方案.但是,我必然会使用卫星图像,因此绑定到谷歌,它不支持边界框解决方案.
lon = data$longitude lat = data$latitude box = make_bbox(lon, lat, f = 0.1) island = get_map(location = box, zoom = 14, source = "osm") islandMap = ggmap(island, extent = "panel", legend = "bottomright") RL = geom_point(aes(x = longitude, y = latitude), data = data, size = 4, color = "#ff0000") islandMap + RL
如何确保地图与使用zoom = 14一样大,所有点都在图中(加上此处的边距)和卫星图像?
使用我在这个问题上的答案,我做了以下几点.您可能希望获得一个缩放= 13的地图,然后您想用scale_x_continuous()
和修剪地图scale_y_continuous()
.
library(ggmap) library(ggplot2) island = get_map(location = c(lon = -63.247593, lat = 17.631598), zoom = 13, maptype = "satellite") RL <- read.table(text = "1 17.6328 -63.27462 2 17.64614 -63.26499 3 17.64755 -63.25658 4 17.64632 -63.2519 5 17.64888 -63.2311 6 17.63113 -63.2175 7 17.61252 -63.23623 8 17.62463 -63.25958", header = F) RL <- setNames(RL, c("ID", "Latitude", "Longitude")) ggmap(island, extent = "panel", legend = "bottomright") + geom_point(aes(x = Longitude, y = Latitude), data = RL, size = 4, color = "#ff0000") + scale_x_continuous(limits = c(-63.280, -63.20), expand = c(0, 0)) + scale_y_continuous(limits = c(17.60, 17.66), expand = c(0, 0))