我不确定这是否是提出这个问题的正确位置,但有没有人建议访问可用于ggmap的不同地图样式? CloudMade不再为不是“企业帐户”的帐户提供API密钥。
从“ggmap:使用ggplot2进行空间可视化”(Kahle和Wickham),他们建议使用Stamen或Google地图,但我正在寻找与这些不同的风格。
有人可以建议可以用于ggmap的地图样式库吗?
干杯
答案 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中选择主题的简便方法,预制了超过16,000种不同的样式,并允许您创建自定义设计。
要使用设计,请转到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)
计划进一步开发,并可能在未来将其与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 = …
选项结合使用,以尝试获取适合您的内容。