使用lapply时重复一个绘图的ggplots列表

时间:2015-12-02 20:09:22

标签: r ggplot2 lapply

我对lapply的经验不多,所以我希望有人可以帮助我。 我看到了使用lapply here的建议。 我的数据在列中,我创建了一个向量,将样本分成两组。这是一个非常简化的版本,我希望为G0绘制单个点,为G0​​绘制2个点。

>DF
      V1 V2 V3
    S1 3  5  6
    S2 2  7  2
    S3 4  5  7


status = c("G0","G0", "G1")

我绘制一个图的简化代码是

ggplot(DF, aes(x=status, y=DF[,1])) +geom_jitter(position=position_jitter(0.2))

当我使用lapply创建一个绘图列表时,它只是重复相同的绘图。

list_of_plots<-lapply(1:3,function(i) {ggplot(DF, aes(x=status, y=DF[,i])) +geom_jitter(position=position_jitter(0.2))})

任何想法为什么?或者以某种方式创建ggplots列表的任何其他想法? 我想使用多色函数将这些图的多个绘制成pdf。

以下是我的真实数据enter image description here

中的示例

1 个答案:

答案 0 :(得分:2)

我不确定您的数据实际上是什么样子,因为示例数据中的status与您发布的地图中的status不同。无论如何,这里是一个如何为每列数据创建单独的绘图的示例:

library(gridExtra) # For grid.arrange function

# Data frame based on your sample data
DF = structure(list(status = c("S1", "S2"), V1 = c(3L, 2L), V2 = c(5L,7L), V3 = c(6L, 2L)), .Names = c("status", "V1", "V2", "V3"), class = "data.frame", row.names = c(NA, -2L))

DF
  status V1 V2 V3
1     S1  3  5  6
2     S2  2  7  2

list_of_plots<-lapply(names(DF)[2:4], function(i) {
  ggplot(DF, aes_string(x="status", y=i)) +
    geom_jitter(position=position_jitter(0.2))})
do.call(grid.arrange, c(list_of_plots, ncol=3))

enter image description here