R: Ошибка в get_map () / get_googlemap () из ggmap - PullRequest
0 голосов
/ 25 января 2019

Я пытаюсь использовать GGmap для создания графика аварий с участием автомобилей.Карта будет иметь точки, размер которых зависит от количества автомобильных аварий в штате.

В частности, я пытаюсь воссоздать график США, показанный в разделе визуализирующих кластеров этого сообщения в блоге .

Однако всякий раз, когда я пытаюсь создать карту, я получаю эту ошибку.

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

Я настраиваю Google API и вижу, что он получает хиты.Я также включил его и у меня есть ключ.

Кроме того, я установил GGmap из учетной записи github с помощью этой команды:

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

Но я не могу передать эту ошибку.

Еслилюбой может помочь, это было бы здорово.

Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 21 мая 2019

Эта ошибка вызвана тем, что в ключе Google не включена соответствующая активность API для этого ключа.

Зайдите в консоль Google API и включите API «Статический API Карт», и он должен работать для вас.

0 голосов
/ 13 марта 2019

Я испытываю ту же ошибку и выполнил инструкции, указанные в комментарии. Я добавил:

  • 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_map на «osm» без какого-либо успеха.

Любые дальнейшие идеи для решения этой проблемы приветствуются.

...