Ausrichten und Anordnen von Diagrammen in ggplot

Ich habe zwei Diagramme in ggplot mit ähnlichen Bereichen auf der Achse, die ich ausrichten möchte.

Using:

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

wosize='last' stellt sicher, dass die Gitter für x ausgerichtet sind. Ich erhalte ein Layout wie das folgende:

Das obere Diagramm hat einen zu großen vertikalen Bereich für die einfache Zeile, die ich darstellen möchte.

Ich hätte gerne ein Bild, das mehr mit dem Folgenden übereinstimmt:

Oder alternativ, wenn das g1-Diagramm unterhalb der Achse des g2-Diagramms ausgerichtet ist. (Nehmen wir allgemein an, ich möchte in der Lage sein, entweder zu wählen oder g1 über g2 zu legen.

(Mein ursprüngliches Modell war ein einzelnes Diagramm, bei dem die g1-Komponente einfach als Layer im g2-Diagramm mit y = 0 festgelegt wurde. Das Diagramm ist jedoch zu unübersichtlich, um mit diesem Layout gelesen werden zu können. Daher dachte ich, ich sollte das ursprüngliche y = verschieben 0 Elemente in einem separaten Bereich (dh g1).

Minimales Beispiel:

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

Ich möchte, dass der Beschriftungsstreifen (g2) sauber in Bezug auf das Streudiagramm positioniert wird. Der G2-Streifen war Teil des ursprünglichen Diagramms alsgeom_text() element aty=0 aber das Diagramm war mit den dort angebrachten Beschriftungen zu unübersichtlich.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage