Alinear y organizar gráficos en ggplot
Tengo dos gráficos en ggplot con rangos similares en el eje que me gustaría alinear.
Utilizando:
library(grid)
grid.newpage()
grid.draw(rbind(ggplotGrob(g1), ggplotGrob(g2), size = "last"))
dóndesize='last'
garantiza que las cuadrículas estén alineadas para x, obtengo un diseño como este:
El gráfico superior tiene un rango vertical excesivo para la fila simple que quiero representar.
Me gustaría tener una imagen más acorde con lo siguiente:
O, alternativamente, con el gráfico g1 alineado debajo del eje del gráfico g2. (En general, digamos que quiero poder elegir cualquiera de ellos, o incluso superponer g1 sobre g2.
(Mi modelo original era un gráfico único con el componente g1 simplemente establecido como una capa en el gráfico g2 con y = 0; sin embargo, el gráfico está demasiado abarrotado para leer con ese diseño, por lo que pensé que debería mover el original y = 0 elementos en un panel separado (es decir, g1).
Ejemplo mínimo:
size=50
df1=data.frame(x=seq(1,size),y=sample(-100:100,size,rep=TRUE))
df2=data.frame(x=seq(1,size),r=replicate(size,paste(sample(c(letters, LETTERS),3),collapse='')))
g1=ggplot(df1)+geom_point(aes(x=x,y=y))
g2=ggplot(df2)+geom_text(aes(x=x,y=0,label=r),angle=45,size=2)
library(grid)
grid.newpage()
grid.draw(rbind(ggplotGrob(g1), ggplotGrob(g2), size = "last"))
Quiero que la tira de etiquetas (g2) se coloque ordenadamente con respecto al diagrama de dispersión. La tira g2 era parte del gráfico original comogeom_text()
elemento eny=0
pero el gráfico estaba demasiado abarrotado por allí con las etiquetas colocadas allí también.