如何在ggplot条形图中绘制标准误差条?

时间:2020-07-23 14:41:56

标签: r ggplot2 bar-chart

I have three dataframes in R:
> df1
   zone   meangpp
1     1 5.4153407
2     2 4.2429236
3     3 4.5719178
4     4 3.1215946
5     5 4.9222054
6     6 3.0384872
7     7 1.9293729
8     8 8.9709741
9     9 7.8904906
10   10 6.6410986
11   12 5.5011823

> df2
   zone     meangpp
1     1 4.050161
2     2 7.729265
3     3 3.408220
4     4 4.884040
5     5 4.258422
6     6 2.906374
7     7 2.241984
8     8 4.703197
9     9 3.617657
10   10 2.712997
11   12 3.589406

> df3
   zone     meangpp
1     1 5.65432
2     2 8.76234
3     3 2.67676
4     4 5.63432
5     5 9.87654
6     6 3.45423
7     7 6.76745
8     8 3.45545
9     9 1.23434
10   10 2.712997
11   12 3.589406
所有数据框中的区域代表土地覆被类别。我根据用户在过去的问题中提供的此代码计算了标准差。我想计算标准误差线并在条形图中绘制。

我的标准差的代码是:

library(tidyverse)
df <- bind_rows("df1" = df1, "df2" = df2, "df3" = df3, .id = "groups")

my_sd <- df %>%
  group_by(groups) %>%
  summarise(sd=sd(meangpp))

# Standard deviation
df %>% 
  left_join(my_sd) %>% 
  mutate(zone = factor(zone)) %>% 
  ggplot(aes(x=zone, y=meangpp, fill = groups)) + 
  geom_col(position = position_dodge()) +
  geom_errorbar(aes(x=zone, ymin=meangpp-sd, ymax=meangpp+sd), width=0.4, position = position_dodge(.9)) +
  ggtitle("using standard deviation")

我应该对此代码进行哪些更改以仅显示标准错误栏

1 个答案:

答案 0 :(得分:1)

您可以像计算标准偏差(SD)一样预先计算标准误差(SE)。标准误差的计算公式为 SE = SD / sqrt(n)。您可以为此使用以下代码

library(tidyverse)
my_se <- df %>%
  group_by(groups) %>%
  summarise(n=n(),
            sd=sd(meangpp),
            se=sd/sqrt(n))

# Standard error
df %>% 
  left_join(my_se) %>% 
  mutate(zone = factor(zone)) %>% 
  ggplot(aes(x=zone, y=meangpp, fill = groups)) + 
  geom_col(position = position_dodge()) +
  geom_errorbar(aes(x=zone, ymin=meangpp-se, ymax=meangpp+se), width=0.4, position = position_dodge(.9)) +
  ggtitle("using standard error")

enter image description here