8
Voglio ottenere una griglia squilibrato di trame comeggplot2: Definire tavola-stampa con grid.arrange() come argomento di 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)
ma utilizzando una funzione
myplot <- function(i){
p <- ggplot(df) + geom_density(aes_string(x=i))
return(p)
}
ed un lapply
chiamata
p <- lapply(c("value1","value2","value3","value4"), myplot)
do.call(grid.arrange, c(p))
In questo caso grid.arrange
distribuire i grafici in una matrice 2 x 2. Ma io voglio ottenere un layout sbilanciata come con
grid.arrange(p1, arrangeGrob(p2,p3,p4, ncol=3), heights=c(2.5/4, 1.5/4), ncol=1)
La mia domanda è diverso, perché nel mio caso le trame sono sbilanciati. Non posso semplicemente passare una lista per fare.call perché voglio altezze diverse per i diversi grafici (vedi figura) – CptNemo
Quindi, si desidera definire un layout. Si prega di regolare il titolo della domanda e il corpo di conseguenza. – Roland
Ha apportato alcune modifiche. Non sono sicuro che sia OK, non sono sicuro di cosa intendi per layout. – CptNemo