首页 > 解决方案 > 如何在 1 个图中使用 CI 绘制 2 个均线图

问题描述

我正在尝试使用 CI 在一个图中绘制 2 条均值线。我使用gplots了它具有画线的功能plotmeans,但我只能在一个图中画一条线。任何人都可以帮忙吗?非常感谢

这是我的数据示例

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 

我想将 MC 和 MB 绘制为一条线,其值为每组的平均值和 CI。将xlabgroupylab是 和 的MCMB

我会期待这样的事情 在此处输入图像描述

非常感谢。

标签: rplotmeanconfidence-interval

解决方案


这可以通过 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)

在此处输入图像描述


推荐阅读