R 使用ggmap为每个位置行生成地图
我有一个数据帧:R 使用ggmap为每个位置行生成地图,r,ggplot2,ggmap,R,Ggplot2,Ggmap,我有一个数据帧: df <- read.csv(text = "name,lat,long Tom,42,-73 Sally,41,-72 Harry,41,-74") …拉地图并将其居中不起作用。我想先把地图放在人的位置的中心,然后把点放在中心位置,输出三张地图 谢谢。我们可以在数据框中循环,每行生成一张地图: library(ggmap) p <- vector("list", 3) for (i in seq_along(df)){ p[[i]] <- ggma
df <- read.csv(text = "name,lat,long
Tom,42,-73
Sally,41,-72
Harry,41,-74")
…拉地图并将其居中不起作用。我想先把地图放在人的位置的中心,然后把点放在中心位置,输出三张地图
谢谢。我们可以在数据框中循环,每行生成一张地图:
library(ggmap)
p <- vector("list", 3)
for (i in seq_along(df)){
p[[i]] <- ggmap(get_map(location = c(lon = df$lon[i], lat = df$lat[i]),
zoom = 12, color = "bw", source = "google")) +
geom_point(data=df[i,], aes(x=long, y=lat), color='red')
}
> p[[1]]
注:
zoom=12。。。source=“osm”
位于location=c(…)
参数内。这些应该是get\u map()
的参数对于这三张地图中的每一张,是否希望其他两个点位于同一张地图上?不,我希望每行数据生成一张地图,每张地图一个点,地图以该点为中心。我认为在下载osm时出现了问题。例如,@Z.Lin-您的代码对于示例数据非常有效,但我尝试使用4个位置,并将第一行更新为:p@nycrefugee循环穿过数据帧的每一行(
seq_-ough(df)
),因此我首先检查第4个位置是如何添加到数据帧的。是否在第四行?@Z.Lin是的,我在上面的可复制数据中添加了另一行,并通过Rmd文档中的代码片段加载。我把向量改为4,但它从来没有通过3轮的循环。我试图保存df并重新加载,但没有效果。我会继续尝试-谢谢。@nycrefugee尝试显式设置I=4
&在循环中运行代码,看看这对上面测试框架中的三个数据点起到了什么作用。但是,对于此解决方案,如果任意两点位于同一视野内,则它们会同时出现。下面@Z.Lin的解决方案不会出现这种情况。@nycrefugee你是对的。我已经编辑了我的答案,所以即使任何其他点在同一视野中,它也能工作。
library(ggmap)
p <- vector("list", 3)
for (i in seq_along(df)){
p[[i]] <- ggmap(get_map(location = c(lon = df$lon[i], lat = df$lat[i]),
zoom = 12, color = "bw", source = "google")) +
geom_point(data=df[i,], aes(x=long, y=lat), color='red')
}
> p[[1]]
> p[[2]]
> p[[3]]
Map(function(x, y, z) {
ggmap(get_map(location = c(lon = x, lat = y),
zoom = 12, color = "bw", source = "google")) +
geom_point(data = df[z,], aes(x = long, y = lat), color = "red")
}, df$long, df$lat, seq_along(df))