web-dev-qa-db-fra.com

grid.arrange de gridExtras se fermant avec "seulement 'grobs' autorisés dans 'gList'" après la mise à jour

Je viens de mettre à jour R, R Studio et un tas de packages, y compris ggplot2 et gridExtras sur mon Mac. Maintenant, gridExtras échoue dans le traçage de base avec l'erreur:

"seuls les" grobs "sont autorisés dans" gList ""

Voici du code qui devrait fonctionner mais ne fonctionne pas:

library(ggplot2)
p1 = qplot(1:10,rnorm(10))
p2 = qplot(1:10,rnorm(10))
library(gridExtra)
grid.arrange(p1, p2, ncol=2, main = "Main title")

Cela supprime l'erreur suivante:

Error in gList(list(grobs = list(list(x = 0.5, y = 0.5, width = 1, height = 1,  : 
  only 'grobs' allowed in "gList"
In addition: Warning message:
In grob$wrapvp <- vp : Coercing LHS to a list

Toute aide est appréciée!

32
Mike Shea

C'est parce que grid.arrange n'a plus de paramètre main (semble avoir été éliminé vers l'été 2015 avec la version 2.0.0) et pense donc que le main= le paramètre doit être un grob. Pour remplacer le main, vous pouvez utiliser le paramètre top maintenant (ainsi qu'un bottom, left et right).

Cela fonctionne donc par exemple:

library(ggplot2)
p1 = qplot(1:10,rnorm(10))
p2 = qplot(1:10,rnorm(10))

library(gridExtra)
grid.arrange(p1, p2, ncol=2,top="Main Title")

Le message est un peu déroutant, car il examine tous les paramètres qu'il ne connaît pas et suppose qu'ils peuvent être grobs (objets graphiques) qu'il peut tracer. Un message d'erreur déroutant comme celui-ci est le prix à payer pour cette flexibilité.

Remarque: - si vous avez beaucoup de grobs, vous devriez envisager de les regrouper dans une liste et d'utiliser le formulaire:

grid.arrange( grobs = list(p1,p2,...),...

Voici ce que ce code ci-dessus entraîne:

enter image description here

37
Mike Wise