gpt4 book ai didi

r - ggplot2:使用grid.arrange()作为do.call()的参数定义图版面

转载 作者:行者123 更新时间:2023-12-03 20:08:49 28 4
gpt4 key购买 nike

我想获得一个不平衡的网格图,例如

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

关于r - ggplot2:使用grid.arrange()作为do.call()的参数定义图版面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30299529/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com