Alinhando e organizando gráficos no ggplot

Eu tenho dois gráficos no ggplot com intervalos semelhantes no eixo que gostaria de alinhar.

Usando:

library(grid)
grid.newpage()
grid.draw(rbind(ggplotGrob(g1), ggplotGrob(g2), size = "last"))

Ondesize='last' garante que as grades estejam alinhadas para x, recebo um layout como este:

O gráfico superior tem um intervalo vertical excessivo para a linha simples que quero representar.

Gostaria de ter uma imagem mais de acordo com o seguinte:

Ou, alternativamente, com o gráfico g1 alinhado abaixo do eixo do gráfico g2. (Por general, digamos que eu queira escolher entre, ou mesmo sobrepor g1 em cima de g2.

(Meu modelo original era um gráfico único com o componente g1 simplesmente definido como uma camada no gráfico g2 com y = 0; no entanto, o gráfico é muito confuso para ler com esse layout, então pensei em mover o y = 0 original elementos em um painel separado (ou seja, g1).

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

Quero que a faixa de etiqueta (g2) seja posicionada corretamente em relação ao gráfico de dispersão. A faixa g2 fazia parte do gráfico original como umgeom_text() elemento emy=0 mas o gráfico estava muito cheio por lá com as etiquetas colocadas lá também.

questionAnswers(1)

yourAnswerToTheQuestion