ggmap地图样式库?现在CloudMade不再提供API

时间:2014-04-13 22:36:10

标签: r ggplot2 ggmap

我不确定这是否是提出这个问题的正确位置,但有没有人建议访问可用于ggmap的不同地图样式? CloudMade不再为不是“企业帐户”的帐户提供API密钥。

从“ggmap:使用ggplot2进行空间可视化”(Kahle和Wickham),他们建议使用Stamen或Google地图,但我正在寻找与这些不同的风格。

有人可以建议可以用于ggmap的地图样式库吗?

干杯

4 个答案:

答案 0 :(得分:2)

您可以使用maps包获得简单的水陆对比:

使用xlim和ylim设置地图的边界。

library(maps)
library(ggplot2)

map <- fortify(map(fill = TRUE, plot = FALSE))

ggplot(data = map, aes(x=long, y=lat, group = group)) +
   geom_polygon(fill = "ivory2") +
   geom_path(colour = "black") +
   coord_cartesian(xlim = c(137, 164), ylim = c(-14, 3.6)) +
   theme(panel.background = element_rect(fill = "#F3FFFF"),
          panel.grid.major = element_blank(),
          panel.grid.minor = element_blank())

地图有点笨拙,但mapdata包&gt;中提供了高分辨率地图

library(mapdata)
map <- fortify(map("worldHires", fill = TRUE, plot = FALSE))

ggplot(data = map, aes(x=long, y=lat, group = group)) +
   geom_polygon(fill = "ivory2") +
   geom_path(colour = "black") +
   coord_cartesian(xlim = c(135, 165), ylim = c(-15, 0)) +  # Papua New Guinea
   theme(panel.background = element_rect(fill = "#F3FFFF"),
          panel.grid.major = element_blank(),
          panel.grid.minor = element_blank())  # Be patient

或者可以选择一个国家/地区。

map <- fortify(map("worldHires", fill = TRUE, plot = FALSE))

ggplot(data = subset(map, region == "Papua New Guinea"), aes(x=long, y=lat, group = group)) +
   geom_polygon(fill = "ivory2") +
   geom_path(colour = "black") +
   theme(panel.background = element_rect(fill = "#F3FFFF"),
          panel.grid.major = element_blank(),
          panel.grid.minor = element_blank()) 

答案 1 :(得分:2)

谷歌地图有一点鲜为人知的风格特征:

https://developers.google.com/maps/documentation/javascript/styling

正如另一条评论指出的那样,get_map只是get_googlemap等的包装器。然后get_googlemap只是一系列http调用的包装器,用于获取地图图块,所以似乎可以从get_googlemap中删除代码而不是指向基本的谷歌地图风格,它会抓住风格的瓷砖。

我可能会在下个月开始研究这种方法,因为我需要OP提供的类​​似底图。

答案 2 :(得分:1)

  

目前最适合ggmap的开发版本。要使用此功能,您需要运行devtools::install_github("dkahle/ggmap")

我开发了一个新的包ggmapstyles,它可以解决这个问题:https://github.com/mikey-harper/ggmapstyles。它提供了一种从Snazzy Maps中选择主题的简便方法,enter image description here预制了超过16,000种不同的样式,并允许您创建自定义设计。

enter image description here

要使用设计,请转到Snazzymaps并找到您喜欢的样式,然后使用get_snazzymap()参数将URL复制到函数mapRef中:

devtools::install_github("dr-harper/ggmapstyles")
library(ggmapstyles)

map <- get_snazzymap(center = 'Southampton, UK', 
                     mapRef = "https://snazzymaps.com/style/72543/assassins-creed-iv")
ggmap(map)

twitter-bootstrap-wizard

计划进一步开发,并可能在未来将其与ggmap合并:)

答案 3 :(得分:0)

这是get_map的函数定义:

function (location = c(lon = -95.3632715, lat = 29.7632836), 
    zoom = "auto", scale = "auto", maptype = c("terrain", "satellite", 
        "roadmap", "hybrid", "toner", "watercolor"), messaging = FALSE, 
    urlonly = FALSE, filename = "ggmapTemp", crop = TRUE, color = c("color", 
        "bw"), source = c("google", "osm", "stamen", "cloudmade"), 
    api_key) 

并且,其中包含一系列if语句,将其限制为source = …选项。

您可以将它们与各种maptype = …选项结合使用,以尝试获取适合您的内容。