ggplot2:使用 grid.arrange() 作为 do.call() 的参数定义绘图布局
ggplot2: Define plot layout with grid.arrange() as argument of 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)
但使用函数
myplot <- function(i){
p <- ggplot(df) + geom_density(aes_string(x=i))
return(p)
}
和一个 lapply
电话
p <- lapply(c("value1","value2","value3","value4"), myplot)
do.call(grid.arrange, c(p))
在这种情况下 grid.arrange
将绘图分布在 2 x 2 矩阵中。但我想获得与
一样的不平衡布局
grid.arrange(p1, arrangeGrob(p2,p3,p4, ncol=3), heights=c(2.5/4, 1.5/4), ncol=1)
你现在可以做,
grid.arrange(p1,p2,p3,p4, layout_matrix = rbind(c(1,1,1),c(2,3,4)))
我想获得一个不平衡的地块网格,例如
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)
但使用函数
myplot <- function(i){
p <- ggplot(df) + geom_density(aes_string(x=i))
return(p)
}
和一个 lapply
电话
p <- lapply(c("value1","value2","value3","value4"), myplot)
do.call(grid.arrange, c(p))
在这种情况下 grid.arrange
将绘图分布在 2 x 2 矩阵中。但我想获得与
grid.arrange(p1, arrangeGrob(p2,p3,p4, ncol=3), heights=c(2.5/4, 1.5/4), ncol=1)
你现在可以做,
grid.arrange(p1,p2,p3,p4, layout_matrix = rbind(c(1,1,1),c(2,3,4)))