library(ggplot2)
df <- data.frame(x=1:10, y=rnorm(10))
p1 <- ggplot(df, aes(x,y)) + geom_point()
plist <- list(p1,p1,p1,p1,p1)
# In my real example,a plot function will fit a ggplot to a list of datasets
#and return a list of ggplots like the example above.
Je voudrais organiser les parcelles en utilisant grid.arrange()
in gridExtra
.
Comment procéder si le nombre de parcelles plist
est variable?
Cela marche:
grid.arrange(plist[[1]],plist[[2]],plist[[3]],plist[[4]],plist[[5]])
mais j'ai besoin d'une solution plus générale. pensées?
grid.arrange(plist[[1:length(plist)]], ncol = nCol))
j'obtiens une erreur comme celle-ci:Error in hl.plots[[1:12]] : no such index at level 3
Merci!x <- list(1,2); x[[3:1]]
. Plus largement, utilisez quelque chose commeplist[...]
plutôt queplist[[...]]
de faire votre sous-ensemble. Et puis utilisezdo.call()
, que nous devons utiliser cargrid.arrange()
n'est pas configuré pour prendre une liste comme premier argument. Salutations et bonne chance!Vous pouvez utiliser
grid.arrange()
etarrangeGrob()
avec des listes aussi longtemps que vous spécifiez la liste en utilisant l'grobs =
argument de chaque fonction. Par exemple, dans l'exemple que vous avez donné:la source
Par souci d'exhaustivité (et comme cette ancienne question déjà répondue a été relancée, récemment ), je voudrais ajouter une solution en utilisant le
cowplot
package:la source
Error in ggplot_to_gtable(x) : Argument needs to be of class "ggplot" or "gtable"
ggplot2
package ou les graphiques de base?ggplot2
.grid.arrange
a presque fonctionné pour moi - mais, il s'avère que ma liste de parcelles ne se remplit pas. J'ai posté le problème sous forme de question: stackoverflow.com/questions/43216262/… . Donc, je me demande si cela aurait pu également être le problème pour cowplotJe sais que la question indique spécifiquement l'utilisation du package gridExtra , mais la
wrap_plots
fonction du package patchwork est un excellent moyen de gérer la liste de longueur variable:Une chose utile à ce sujet est que vous n'avez pas besoin de spécifier le nombre de colonnes requises et que vous viserez à maintenir les nombres de colonnes et de lignes égaux. Par exemple:
la source
devtools::install_github("thomasp85/patchwork")
- dessus ?Pour adapter tous les tracés sur une seule page, vous pouvez calculer le nombre de colonnes et de lignes comme ceci:
Comme la plupart des fonctions de traçage multiples ont ncol et nrow comme arguments, vous pouvez simplement les insérer ici. J'aime ggarrange de ggpubr.
Cela favorise plus de lignes que de colonnes, donc inversez si vous voulez le contraire. C'est-à-dire que pour 6 parcelles, cela donnera 3 lignes et 2 colonnes et non l'inverse.
la source