如何在1个图中用CI绘制2个均线图

时间:2019-04-03 10:30:09

标签: r plot mean confidence-interval

我正在尝试使用CI在一条图中绘制2条均线。我使用具有功能gplots的{​​{1}}画一条线,但是我只能在一个图中画一条线。有人可以帮忙吗?非常感谢

这是我的数据示例

plotmeans

我想将MC和MB绘制为一条线,该值是平均值,每组的CI。 Group MC MB G1 5 10 G2 8 8 G3 14 7 G4 20 6 G1 10 15 G2 16 13 G3 30 9 G4 25 7 G1 15 29 G2 20 22 G3 25 20 G4 35 15 将是xlabgroupylabMC的值。

我希望这样的事情 enter image description here

非常感谢。

1 个答案:

答案 0 :(得分:0)

这可以与tidyr,dplyr和ggplot2结合使用。

# Your data
group <- c("G1", "G2", "G3", "G4", "G1", "G2", "G3", "G4", "G1", "G2", "G3", "G4")
mc <- c(5, 8, 14, 20, 10, 16, 30, 25, 15, 20, 25, 35)
mb <- c(10, 8, 7, 6, 15, 13, 9, 7, 29, 22, 20, 15)
df <- data.frame(group, mc, mb)

首先,我们使用列类别(cat)和值将您的数据收集为长格式。

# Requires library "tidyr"
library(tidyr)

# Gathering data
df_gathered <- gather(df, cat, value, 2:3)

接下来,您将计算组和类别的每种组合的均值和误差:

# Requires the library "dplyr"
library(dplyr)

# Calculating mean and error by group
df_mean_by_group <- df_gathered %>% 
  group_by(group, cat) %>%
  summarise(mean = mean(value), error = qnorm(0.975)*sd(value)/length(value))

最后,我们按类别(将它们连接)对线进行分组绘制,并按类别对它们进行着色:

# Requires "ggplot2"
library(ggplot2)

# Plotting it all
ggplot(df_mean_by_group, aes(x=group, y=mean, colour=cat, group=cat)) + 
  geom_errorbar(aes(ymin=mean-error, ymax=mean+error), colour="black", width=.1) +
  geom_line() +
  geom_point(size=3)

enter image description here