8
Ich möchte ein unausgeglichenes Raster von Plots erhalten wieggplot2: Definieren Sie Plot-Layout mit grid.arrange() als Argument von do.call()
require(ggplot2)
require(gridExtra)
df <- data.frame(value1 = rnorm(200),
value2 = rnorm(200),
value3 = rnorm(200),
value4 = rnorm(200))
p1 <- ggplot(df) + geom_density(aes(x=value1))
p2 <- ggplot(df) + geom_density(aes(x=value2))
p3 <- ggplot(df) + geom_density(aes(x=value3))
p4 <- ggplot(df) + geom_density(aes(x=value4))
grid.arrange(p1, arrangeGrob(p2,p3,p4, ncol=3), heights=c(2.5/4, 1.5/4), ncol=1)
aber mit einer Funktion
myplot <- function(i){
p <- ggplot(df) + geom_density(aes_string(x=i))
return(p)
}
und ein lapply
Anruf
p <- lapply(c("value1","value2","value3","value4"), myplot)
do.call(grid.arrange, c(p))
In diesem Fall grid.arrange
verteilen Sie die Diagramme in einer 2 x 2-Matrix. Aber ich mag ein unausgewogenes Layout erhalten, wie mit
grid.arrange(p1, arrangeGrob(p2,p3,p4, ncol=3), heights=c(2.5/4, 1.5/4), ncol=1)
Meine Frage ist anders, weil in meinem Fall die Plots unausgewogen sind. Ich kann nicht einfach eine Liste an do.call übergeben, weil ich unterschiedliche Höhen für verschiedene Plots haben möchte (siehe Abbildung). – CptNemo
Sie möchten also ein Layout definieren. Bitte passen Sie den Titel und den Text Ihrer Frage entsprechend an. – Roland
Hat einige Änderungen vorgenommen. Nicht sicher, ob es in Ordnung ist, nicht sicher, was genau Sie mit Layout meinen. – CptNemo