在R中绘制并刻划一张地图

时间:2017-12-21 22:12:17

标签: r google-maps ggplot2 facet ggmap

主数据框

library(ggplot2)
library(ggmap)

lon <- as.numeric(new$lon)
lat <- as.numeric(new$lat)


spots_df <- as.data.frame(cbind(lon, lat))

mapa_spots <- get_map(location = c(lon = mean(spots_df$lon), lat = mean(spots_df$lat)), zoom = 6, maptype = "terrain", scale = 2)

plot_spots <- ggmap(mapa_spots) +
  geom_point(data = spots_df, aes(x = lon, y = lat, fill = "red", alpha = 0.8), size = 2, shape = 21) +
  guides(fill=FALSE, alpha=FALSE, size=FALSE)

plot_spots 

我正在尝试绘制地图,用于打印,结果将是每个挑战的地图,并根据每个视频的视图更改其大小。

到目前为止,我的代码将所有点都放在同一个地图中 - 我遇到了分面问题并改变了点的大小。

当我在美学中改变变量时,积分变得非常大。

缩放级别太近或太远。

我正在使用的代码如下。 我看到的每一个例子要么离我想要的太远,要么就是不要 工作

我做得对,还是需要另一种方法?

谢谢!

proxy.conf.json

我从这段代码得到的结果:

plot_spots

1 个答案:

答案 0 :(得分:1)

假设您的数据框名为dt,则此处是包含的图表。关键是在base_layer使用ggplot(dt, aes(...))参数,以便您可以像geom电话一样进一步添加其他ggplot。您提到您希望每个挑战都在评论的单独地图中。我认为facet_wrap可能就是你要找的东西。

library(ggplot2)
library(ggmap)

mapa_spots <- get_map(location = c(lon = mean(dt$lon), 
                                   lat = mean(dt$lat)), 
                      zoom = 6, maptype = "terrain", scale = 2)

ggmap(mapa_spots, base_layer = ggplot(dt, aes(x = lon, y = lat, size = views))) +
  geom_point() +
  facet_wrap(~challenge, ncol = 3)

enter image description here

数据

dt <- data.frame(lat = c(38.6938, 38.4262, 32.7607, 37.083, 39.4619, 41.0042),
                 lon = c(-9.20587, -8.90007, -16.9595, -8.90918, -8.38391, -7.9699),
                 views = c(13565, 27020, 74420, 18550, 73253, 14615),
                 challenge = c("SPOT CIDADE", "SPOT NATUREZA I",
                               "SPOT NATUREZA II", "SPOT ROMANCE",
                               "SPOT PATRIMONIO", "SPOT GASTRONOMIA"),
                 stringsAsFactors = FALSE)