使用ggmap为每个位置行生成地图

时间:2017-09-10 22:32:09

标签: r ggplot2 ggmap

我有一个数据框:

const express = require('express');
const router = express.Router();
const request = require('request');

router.get('/', function(req, res) {
    const url = 'https://www.gravatar.com/avatar/2ea70f0c2a432ffbb9e5875039645b39?s=32&d=identicon&r=PG&f=1';

    request.get(url).pipe(res);
});

module.exports = router;

那里有3个人。使用ggmap我想每行生成一个地图,在这种情况下显示每个人的位置。

之前我使用过ggmap,但我的代码是:

df <- read.csv(text = "name,lat,long
Tom,42,-73
Sally,41,-72
Harry,41,-74")

...无法拉动地图并使其居中。我想首先将地图置于人的位置中心,然后将点放在该中心位置,将三张地图作为输出。

感谢。

2 个答案:

答案 0 :(得分:2)

我们可以遍历数据框,每行产生一个地图:

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]]

plot1

> p[[2]]

plot2

> p[[3]]

plot3

注意:

  1. 您在zoom = 12, ... source = "osm"参数中有location = c(...) 。这些应该是get_map()
  2. 的参数
  3. 出于某种原因,我在openstreetmap时遇到错误(HTTP状态是“错误请求”#39;)因此我使用了默认的Google地图。

答案 1 :(得分:1)

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))

enter image description here enter image description here enter image description here