使用ggmap世界地图

use*_*116 6 r ggplot2 ggmap

我正在尝试使用ggmappackage/get_map功能(请参阅下面的代码)结合使用获取整个世界的简单栅格地图ggplot2.缩放级别仅朝向"3",并且不允许进一步缩小

获得一张世界地图似乎是不可能的(如说明中所述ggmap:( "maps of the whole world currently not supported").也许由于缺乏理解为什么这是不可能/不支持的,有没有一种解决方案可以获得世界地图视图?

关于问题的编辑/更新:我试图按照建议使用世界地图 - 但由于某种原因我不明白为什么它不允许我在图中绘制点(这是最初的目标,并且确实有效in ggmap) - 觉得我做了一些愚蠢的事情/犯了一些基本的错误.我收到错误消息"Error in eval(expr, envir, enclos) : object 'group' not found"

编辑 - 不幸的是我使用OpenStreetMap收到错误消息(java错误.正在修复此问题 - 但非OpenStreetMap解决方案会很棒......)

总结一下 - 这种ggmap方法有效geom_point,但我不能得到一个完整的世界地图.这种worldmap方法应该有效,但由于某种原因无法获得积分.....

以下新代码:

ggmap 做法:

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"))
Run Code Online (Sandbox Code Playgroud)

worldmap 做法:

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"))
Run Code Online (Sandbox Code Playgroud)

Ian*_*ows 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))
Run Code Online (Sandbox Code Playgroud)

  • 您可以放大变焦以获得更高的分辨率。该包会将相关的图块缝合在一起。但这里还有两个额外的问题。首先,文本设计为在墨卡托坐标中查看,而不是在长纬度坐标中查看。这就是 OpenStreetMap 默认情况下不转换为长纬度的原因。第二种是ggplot2(即网格)渲染栅格的方式。由于某种原因,它似乎不如基地那么好。查看plot(map) 和autoplot(map) 之间的区别。 (2认同)