R:来自ggmap的get_map()/ get_googlemap()出错

问题描述 投票:3回答:2

我正在尝试使用GGmap创建一个州的车辆碰撞图。地图将有根据州内车祸数量确定大小的点。

特别是我试图重新创建在这个blog post的可视化集群部分中显示的美国情节。

但是,每当我尝试创建地图时,我都会收到此错误。

Error in aperm.default(map, c(2, 1, 3)) : 
  invalid first argument, must be an array

我已经设置了Google API并看到它正在接收点击量。我也启用了它并拥有密钥。

另外我使用这个命令从github帐户安装了GGmap:

devtools::install_github("dkahle/ggmap", ref = "tidyup", force=TRUE)

因为CRAN没有更新。

我已经重新启动并退出R几次,但错误仍然存​​在。

即使我只是简单地运行:

get_map()

它仍会导致错误:

Error in aperm.default(map, c(2, 1, 3)) : 
      invalid first argument, must be an array

下面是我的代码,它类似于博客文章中的代码:

mydata$State <- as.character(mydata$State)
mydata$MV.Number = as.numeric(mydata$MV.Number)
mydata = mydata[mydata$State != "Alaska", ]
mydata = mydata[mydata$State != "Hawaii", ]
devtools::install_github("dkahle/ggmap", ref = "tidyup", force=TRUE)
library(ggmap)
ggmap::register_google(key = "...") #my key is here
for (i in 1:nrow(mydata)) {
  latlon = geocode(mydata[i,1])
  mydata$lon[i] = as.numeric(latlon[1])
  mydata$lat[i] = as.numeric(latlon[2])
}
mv_num_collisions = data.frame(mydata$MV.Number, mydata$lon, mydata$lat)

colnames(mv_num_collisions) = c('collisions','lon','lat')
usa_center = as.numeric(geocode("United States"))


USAMap = ggmap(get_googlemap(center=usa_center, scale=2, zoom=4), 
extent="normal")
USAMap + 
   geom_point(aes(x=lon, y=lat), data=mv_num_collisions, col="orange", 
alpha=0.4, size=mv_num_collisions$collisions*circle_scale_amt) +  
   scale_size_continuous(range=range(mv_num_collisions$collisions))

我希望地图输出像this

但我似乎无法通过这个错误。

如果有人能提供帮助,那就太棒了。

如果您需要更多信息,请与我们联系。

谢谢。

r dictionary ggplot2 plot ggmap
2个回答
0
投票

我遇到了同样的错误,并遵循了评论中提到的说明。我补充说:

  • 静态地图API
  • 地理位置API
  • 地理编码API

我用ggmap从源头安装了devtools::install_github("dkahle/ggmap")。然后我用register_google(key = "xxx")注册了我的钥匙,确认钥匙可以与has_google_key()一起使用。

然而,我在打电话给get_map时仍然收到

Error in aperm.default(map, c(2, 1, 3)) : invalid first argument, must be an array In addition: Warning message: In get_googlemap(center = location, zoom = zoom, filename = filename) : HTTP 400 Bad Request

我也改变了get_mapto“osm”的来源,没有任何成功。

任何进一步的想法来解决这个问题,我


3
投票

此错误是由于Google密钥没有为该密钥启用适当的API活动。

进入谷歌API控制台并启用API“Maps Static API”,它应该适合您。

© www.soinside.com 2019 - 2024. All rights reserved.