grilla ggplot abline r r-grid

ggplot - plot grid python



¿Cómo puedo obtener una grilla "desbalanceada" de ggplots? (3)

Con grid.arrange puedo organizar varias figuras ggplot en una grilla para lograr una figura de varios paneles usando algo como:

library(ggplot2) library(grid) library(gridExtra)

generar algunos gráficos ggplot2, luego

plot5 <- grid.arrange(plot4, plot1, heights=c(3/4, 1/4), ncol=1, nrow=2)

¿Cómo puedo obtener un diseño de 2 columnas "desequilibrado" con un trazado en todo el primer círculo y tres trazados en el segundo círculo? Jugué con un enfoque de "cuadrícula de grillas" al tratar de usar grid.arrange para trazar una cuadrícula (por ejemplo, plot5 , arriba) contra otra trama, pero obtuve:

Error in arrangeGrob(..., as.table = as.table, clip = clip, main = main, : input must be grobs!

Actualizar:

Gracias por el consejo. Voy a mirar en los grid viewports y la grid . Mientras tanto, gracias a @DWin, la función layOut en el paquete ''wq'' funcionó muy bien para la figura de compilación en mi documento Sweave :

Actualización 2:

El comando arrangeGrob (como lo sugiere @baptiste) también funciona bien, y parece muy intuitivo, al menos fue fácil alterar el ancho de las dos columnas. También tiene el beneficio de no requerir el paquete `wq ''.

Por ejemplo, aquí está el código de mi archivo Sweave:

<<label=fig5plot, echo=F, results=hide>>= plot5<-grid.arrange(plot4, arrangeGrob(plot1, plot2, plot3, ncol=1), ncol=2, widths=c(1,1.2)) @ /begin{figure}[] /begin{center} <<label=fig5,fig=TRUE,echo=T, width=10,height=12>>= <<fig5plot>> @ /end{center} /caption{Combined plots using the `arrangeGrob'' command.} /label{fig:five} /end{figure}

que produce el siguiente resultado:

Por cierto, ¿alguien me dice por qué aparece el ''> NA''?


Intenté resolverlo con la cuadrícula y pensé que lo tenía mal pero terminé fallando (aunque ahora miro el código en la función que cito a continuación, puedo ver que estaba muy cerca ... :-)

El paquete ''wq'' tiene una función layOut que lo hará por usted:

p1 <- qplot(mpg, wt, data=mtcars) layOut(list(p1, 1:3, 1), # takes three rows and the first column list(p1, 1, 2), # next three are on separate rows list(p1, 2,2), list(p1, 3,2))


Otra alternativa es el paquete de patchwork de Thomas Lin Pedersen.

# install.packages("devtools") # devtools::install_github("thomasp85/patchwork") library(patchwork)

Genera algunas parcelas.

p1 <- ggplot(mtcars) + geom_point(aes(mpg, disp)) + facet_grid(rows = vars(gear)) p2 <- ggplot(mtcars) + geom_boxplot(aes(gear, disp, group = gear)) p3 <- ggplot(mtcars) + geom_smooth(aes(disp, qsec)) p4 <- ggplot(mtcars) + geom_bar(aes(carb))

Ahora arregla las parcelas.

p1 + (p2 / p3 / p4)


grid.arrange dibuja directamente en el dispositivo; si quieres combinarlo con otros objetos de la cuadrícula, necesitas arrangeGrob , como en

p = rectGrob() grid.arrange(p, arrangeGrob(p,p,p, heights=c(3/4, 1/4, 1/4), ncol=1), ncol=2)

Editar (07/2015): con v> 2.0.0 puede usar el argumento layout_matrix ,

grid.arrange(p,p,p,p, layout_matrix = cbind(c(1,1,1), c(2,3,4)))