2016-11-30 1 views
0

Ich versuche, drei Plots übereinander mit dem gridExtra Paket zu stapeln. Ich habe das erste Beispiel versucht, das grid.arrange von here verwendet, das absolut gut funktioniert.Neugieriges Verhalten mit gridExtra (ggplot)

Wenn ich jedoch versuche, meine eigenen Plots zu verwenden, bekomme ich Achsen für jedes Plot, aber keine Daten, mit all den Formatierungen. Mindestarbeitsbeispiel:

library(ggplot2) 
library(gridExtra)  

popu_H0 <- seq(10, 30, length=100) 
popu_H0_norm <- dnorm(popu_H0, mean = 20, sd = 4) 

popu_H0_df <- as.data.frame(cbind(popu_H0, popu_H0_norm)) 
plot_H0 <- ggplot(popu_H0_df, aes(x=popu_H0, y=popu_H0_norm)) 
plot_H0 + 
    geom_line() + 
    theme(
    text = element_text(size=20), 
    axis.title.x = element_text(vjust=0.1), 
    axis.text.x = element_text(size = rel(1.8)), 
    legend.position = "none", 
    axis.title.y = element_blank(), 
    axis.text.y = element_blank(), 
    axis.ticks.y = element_blank(), 
    axis.line.y = element_blank() 
) + 
    xlab("New label") + 
    annotate("text", x = 20, y = 0.05, label = "Some annotation", size = 10) 

grid.arrange(plot_H0, plot_H0, plot_H0, ncol = 1, nrow = 3) 

ggplot erzeugt die erwartete Leistung, aber grid.arrange erzeugt this.

Antwort

1

Sie haben vergessen, das Plotobjekt zu ersetzen.

library(ggplot2) 
library(gridExtra) 
popu_H0 <- seq(10, 30, length=100) 
popu_H0_norm <- dnorm(popu_H0, mean = 20, sd = 4) 

popu_H0_df <- as.data.frame(cbind(popu_H0, popu_H0_norm)) 
plot_H0 <- ggplot(popu_H0_df, aes(x=popu_H0, y=popu_H0_norm)) 
plot_H0 <- plot_H0 + # Here you need `<-` to update the plot 
    geom_line() + 
    theme(
    text = element_text(size=20), 
    axis.title.x = element_text(vjust=0.1), 
    axis.text.x = element_text(size = rel(1.8)), 
    legend.position = "none", 
    axis.title.y = element_blank(), 
    axis.text.y = element_blank(), 
    axis.ticks.y = element_blank(), 
    axis.line.y = element_blank() 
) + 
    xlab("New label") + 
    annotate("text", x = 20, y = 0.05, label = "Some annotation", size = 10) 

grid.arrange(plot_H0, plot_H0, plot_H0, ncol = 1, nrow = 3) 
+0

Danke für die Antwort. Aber vermisse ich etwas? Der Code, den Sie gepostet haben, ist identisch mit dem von mir, außer Sie haben (richtigerweise) die Bibliotheksaufrufe ganz oben hinzugefügt. Vielleicht ist der Hinweis in "Sie haben vergessen, das Grundstück zu ersetzen", aber ich weiß nicht, was das bedeutet! Wenn Sie sich auf die Tatsache beziehen, dass ich den gleichen Plot dreimal verwendet habe, kann ich bestätigen, dass das Verhalten bei drei verschiedenen Plot-Objekten genau gleich ist. Ich habe es nur auf diese Weise gepostet, um das Beispiel einfach und reproduzierbar zu machen. – suknat

+0

Ich habe 'plot_H0 <-' in der 7. Zeile. Ich füge einen Kommentar hinzu. –

+0

Brilliant und danke! Entschuldigung, ich habe das nicht bemerkt! – suknat

Verwandte Themen