将R中的2个不同图形输出组合成一个图形

时间:2013-04-30 16:42:12

标签: r graph ggplot2

所以我使用下面的代码来生成图形,其中appl和apple生成2个不同的图形,现在我想将它们组合成单个图形

data <- ddply(data, .(Value), summarise, 
               N    = length(means),
               mean = mean(means),
               sd   = sd(means),
               se   = sd(means) / sqrt(length(means)) )

apple=ggplot(data, aes(x=Value, y=mean)) + 
  geom_errorbar(aes(ymin=mean-se, ymax=mean+se), width=.1) +
  geom_ribbon(aes(ymin=mean-se, ymax=mean+se),alpha=0.5) +
  geom_line() +
  geom_point()

dat <- ddply(dat1, .(Value), summarise, 
               N    = length(means),
               mean = mean(means),
               sd   = sd(means),
               se   = sd(means) / sqrt(length(means)))

appl=ggplot(dat, aes(x=Value, y=mean)) + 
  geom_errorbar(aes(ymin=mean-se, ymax=mean+se), width=.1) +
  geom_ribbon(aes(ymin=mean-se, ymax=mean+se),alpha=0.5) +
  geom_line() +
  geom_point()

1 个答案:

答案 0 :(得分:1)

答案涉及将数据集合并为一个大数据集,另外一列指定该子集所属的数据集。无需单独创建绘图并将它们组合在一起。我们假设该列名为id,然后您可以在aes中使用其他参数来使图表正常工作,即aes(x=Value, y=mean, color=id)。可以使用rbind来组合数据集。

代码示例:

df1 = data.frame(Value = sample(LETTERS[1:8], 1000, replace = TRUE), 
                 means = runif(1000))
df2 = data.frame(Value = sample(LETTERS[1:8], 1000, replace = TRUE), 
                 means = runif(1000) + 0.5)
df1 = ddply(df1, .(Value), summarise, 
               N    = length(means),
               mean = mean(means),
               sd   = sd(means),
               se   = sd(means) / sqrt(length(means)))
df1$id = "ID1"
df2 = ddply(df2, .(Value), summarise, 
               N    = length(means),
               mean = mean(means),
               sd   = sd(means),
               se   = sd(means) / sqrt(length(means)))
df2$id = "ID2"
df_all = rbind(df1, df2)
ggplot(df_all, aes(x=Value, y=mean, color = id)) + 
  geom_errorbar(aes(ymin=mean-se, ymax=mean+se), width=.1) +
  geom_ribbon(aes(ymin=mean-se, ymax=mean+se),alpha=0.5) +
  geom_line() +
  geom_point()

结果如下图所示:

enter image description here

请注意,由于缺少示例数据,我不得不发明一些数据,因此这可能不完全适合您的情况。但是,它很好地说明了这种方法。