web-dev-qa-db-fra.com

R: Erreur dans get_map () / get_googlemap () de ggmap

J'essaie d'utiliser GGmap pour créer un graphique des accidents de voiture de véhicule par état. La carte aura des points qui sont dimensionnés en fonction du nombre d'accidents de voiture dans l'État.

En particulier, j'essaie de recréer l'intrigue des États-Unis présentée dans la section Visualisation des clusters de cette article de blog .

Cependant, chaque fois que j'essaie de créer la carte, j'obtiens cette erreur.

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

J'ai configuré l'API Google et je constate qu'elle reçoit des hits. Je l'ai également activé et j'ai la clé.

De plus, j'ai installé GGmap à partir du compte github en utilisant cette commande:

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

car le CRAN n'est pas mis à jour.

J'ai également redémarré et quitté R plusieurs fois, mais l'erreur persiste.

Même si je lance simplement:

get_map()

il en résulte toujours l'erreur:

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

Ci-dessous mon code, il est similaire au code du blog:

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))

Je m'attends à ce que la carte sorte comme this

Mais je n'arrive pas à passer cette erreur.

Si quelqu'un peut aider, ce serait formidable.

Veuillez me faire savoir si vous avez besoin de plus d'informations.

Je vous remercie.

10
mrsquid

Cette erreur est due au fait que la clé google n'a pas activé l'activité API appropriée pour cette clé.

Accédez à la console Google API et activez l'API "Maps Static API" et cela devrait fonctionner pour vous.

8
Roger-123