绘制两组均值和标准差(使用errbar)

时间:2015-10-16 03:00:10

标签: r plot mean standard-deviation

我使用errbar在R中生成一个显示均值和标准差的数字。

这是我的代码

errbar(data$Type, data$Mean,data$Mean+data$Std,data$Mean-data$Std,
       xlab="Type",ylab="Score", ylim=c(0,10))

生成mean和std(水平)的图:

我想为每个"类型"生成一个数字。 (类别)图中显示的不止一个均值/标准。所以我想要的情节看起来像这样(或者每个类别有多个数据点):

this

我可以使用errbar功能执行此操作吗?如果没有,你会如何建议在R?

这样做

这是dput(data)的输出:

structure(list(Type = structure(c(8L, 5L, 7L, 2L, 1L, 6L, 3L, 4L), 
          .Label = c("A", "B", "C", "D", "E", "G", "H", "R"), 
          class = "factor"), Mean = c(5.26785714285714, 5.41071428571429, 5.92857142857143, 
               6.23333333333333, 6.3, 7.78571428571429, 8.38333333333333, 8.75), 
          Std = c(2.3441094046778, 1.80971508291186, 1.50457178749844, 1.86716617466403, 1.93233759251032, 
               1.3931740974961, 1.06848802832164, 1.00445436503037)), 
          .Names = c("Type", "Mean", "Std"), 
          row.names = c(8L, 5L, 7L, 2L, 1L, 6L, 3L, 4L), class = "data.frame")

1 个答案:

答案 0 :(得分:0)

这是ggplot2方法。首先,将以下内容添加到您发布的数据框中:

Mean对数据框进行排序,然后通过转换为因子来锁定该顺序:

data = data[order(data$Mean),]
data$Type = factor(data$Type, levels=data$Type)

在数据框中再添加两行,以便我们可以为每个Type绘制多个均值/误差条:

data = rbind(data, data.frame(Type=c("R","E"), Mean=c(0.5,1.2), Std=c(1.4,1.7)))

添加分组变量,以便为不同颜色的给定Type绘制多个值:

data$group = c(rep("Group 1",8), rep("Group 2", 2))

现在的情节:

ggplot(data, aes(x=Type, Mean, colour=group)) +
  geom_errorbar(aes(ymax=Mean+Std, ymin=Mean-Std), width=0) +
  geom_point(size=3) +
  coord_flip() +
  theme_grey(base_size=15) +
  guides(colour=FALSE)

enter image description here

使用分组变量,你也可以躲避"闪避"给定Type内点的位置,如果误差条对于给定值Type重叠,则该位置非常有用。例如:

# Add another row to the data
data = rbind(data, data.frame(Type="G", Mean=7.5, Std=1.5, group="Group 2"))

# Dodging function
pd = position_dodge(width=0.5)

ggplot(data, aes(x=Type, Mean, colour=group)) +
  geom_errorbar(aes(ymax=Mean+Std, ymin=Mean-Std), width=0, position=pd) +
  geom_point(size=3, position=pd) +
  coord_flip() +
  theme_grey(base_size=15) +
  guides(colour=FALSE)

enter image description here