使用ggmap绘制世界地图

8
我正在尝试使用ggmap软件包/get_map功能(见下面的代码)与ggplot2相结合,获得整个世界的简单光栅地图。缩放级别仅限于“3”,不允许进一步缩小。
似乎不可能获得世界地图(如在ggmap描述中所述:“当前不支持整个世界的地图”)。也许由于不了解为什么不可能/不支持,是否有解决方案/替代方案以获得世界地图视图?
编辑/更新问题:我已尝试使用建议的世界地图 - 但由于某种我不理解的原因,它不允许我在图表中绘制点(这是最初的目标,并在ggmap中起作用)。我感到自己在做一些愚蠢的事情/犯了一些基本错误。我收到错误信息“Error in eval(expr, envir, enclos) : object 'group' not found”。
编辑-不幸的是,我在使用OpenStreetMap时会出现错误消息(java错误。正在修复此错误 - 但非OpenStreetMap解决方案将是很棒的...)
总之-ggmap方法可以使用geom_point,但我无法获得整个世界地图。worldmap方法应该有效,但由于某种原因无法绘制点.....。
新代码如下:
library(ggmap)
library(ggplot2)

reclat=c(50,20,30,40)
reclong=c(30,40,30,50)         
points=as.data.frame(cbind(reclat,reclong))

al1 = get_map(location = 'Europe', zoom = 3, color="bw",maptype = "satellite")
map = ggmap(al1)
map 

#this works
map+geom_point(data=points, aes(x=reclong, y=reclat, colour="red"))

地图方法:

world <- map_data("world")
worldmap <- ggplot(world, aes(x=long, y=lat, group=group)) +
  geom_path() +
  scale_y_continuous(breaks=(-2:2) * 30) +
  scale_x_continuous(breaks=(-4:4) * 45)

#this works
worldmap + geom_point(aes(50, 30, colour="red"))

#this doesnt work
worldmap + geom_point(data=points, aes(x=reclong, y=reclat, colour="red"))

请查看以下链接:https://dev59.com/9mQo5IYBdhLWcg3wdPO8#16054062 - Jonas Tundo
现在是2016年12月。 最小缩放系数为zoom=2,这将给您提供地球的东/西半球。 - knb
1个回答

4
您可以尝试使用OpenStreetMap包,它可以访问许多不同的地图服务器,但不包括GoogleMaps。
library(OpenStreetMap)
library(ggplot2)
map <- openmap(c(70,-179),
               c(-70,179),zoom=1)
map <- openproj(map)


reclat <- c(50,20,30,40)
reclong <- c(30,40,30,50)         
autoplot(map) + geom_point(aes(x=reclong,y=reclat))

ggmap 还实现了 OpenStreetMap 功能,那么为什么不能在 ggmap 中完成这个操作呢?另外,使用您的示例代码,地图的分辨率相当低,我想肯定有一种方法可以改善吧? - maj
2
你可以缩放以获得更高的分辨率。该软件包将拼接相关的图块。但这里有两个额外的问题。第一个是文本设计为在墨卡托坐标下查看,而不是经纬度。这就是为什么 OpenStreetMap 默认情况下不转换为经纬度的原因。第二个问题是 ggplot2(即 grid)渲染光栅图像的方式。由于某种原因,它似乎不如基础绘图函数。请参见 plot(map) 和 autoplot(map) 之间的区别。 - Ian Fellows

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接