如何在ggplot条形图中显示误差线?

时间:2019-11-23 01:36:00

标签: r ggplot2

我想在ggplot可视化中显示基于卡方检验的误差线。

这是我的数据

version <- c("A", "A", "A", "A", "B", "B", "B", "B")
group <- c(1, 2, 3, 4)
values <- c("100", "2000", "500", "800",
            "110", "2500", "800", "1100")

data.frame(version, group, values) %>% 
  ggplot(aes(group, values, fill = version, label = values)) +
  geom_col(position = "dodge") +
  geom_text(position = "dodge")

这是不带条形图

enter image description here

我想要基于卡方检验的误差线,例如here

1 个答案:

答案 0 :(得分:2)

要添加误差线,您需要使用geom_errorbar进行绘制并将sd添加到数据框中。

下面是一个mtcars数据集的简单示例:

library(dplyr)
df = mtcars[c(1:50),]
df = df[!is.na(df$cyl),]
df = df %>% 
  select(., mpg,cyl,gear) %>% 
  group_by(cyl, gear) %>% 
  summarise(Mean = mean(mpg), Sd = sd(mpg))
df

# A tibble: 8 x 4
# Groups:   cyl [3]
    cyl  gear  Mean     Sd
  <dbl> <dbl> <dbl>  <dbl>
1     4     3  21.5 NA    
2     4     4  26.9  4.81 
3     4     5  28.2  3.11 
4     6     3  19.8  2.33 
5     6     4  19.8  1.55 
6     6     5  19.7 NA    
7     8     3  15.0  2.77 
8     8     5  15.4  0.566

现在是绘图部分:

library(ggplot2)
ggplot(df,aes(x = as.factor(cyl), y = Mean, fill = as.factor(gear))) + 
  geom_col(position = "dodge") +
  geom_errorbar(aes(ymin = Mean-Sd, ymax = Mean+Sd),width=.2,
                position=position_dodge(.9))

enter image description here

是您要找的东西吗?