grid.arrange中的条件图

时间:2015-10-16 01:25:48

标签: r ggplot2 gridextra grob

有没有办法使用像

这样的结构
grid.arrange(
    ifelse(somecondition,graph1,graph2),
    ifelse(somecondition2,graph3,graph4),
    ncol=2
)

其中graphX是绘图(使用ggplot2创建)或先前定义的grob。看起来ifelse在打印之前将grob对象评估为其他内容(数据框?),因此grid.arrange无法正确输入以便正常工作。

我还尝试将所有图形对象存储在一个集合中,并在grid.arrange中使用它,但是没有一个合适的数据结构可以很好地工作。

1 个答案:

答案 0 :(得分:0)

使用if() ... else ...,而不是ifelse

p1 = qplot(1,1)
p2 = qplot(1,2)
p3 = qplot(1,3)
p4 = qplot(1,4)

grid.arrange(
    if(1 == 2) p1 else p2,
    if(3 == 3) p3 else p4,
    ncol=2
)

如果您想先将它们存储在列表中,

pl = list(if(1 == 2) p1 else p2, if(3 == 3) p3 else p4)
grid.arrange(grobs=pl, ncol=2)