web-dev-qa-db-ja.com

ggplot2のバープロットにSEエラーバーを追加するにはどうすればよいですか?

2つの昆虫種のオスとメスの平均寿命(年齢)を比較するggplot2を使用して簡単なバープロットを作成しました。私のコードは次のようになります。「データセット」は私のデータセットです...

    gplot(dataset, aes(Species, Age, fill=Sex))+
stat_summary(fun.y = mean, geom = "bar", position = "dodge")+
scale_fill_manual(values = c("Grey25", "Grey"))+
theme(legend.title = element_blank())+
scale_y_continuous(limits = c(0,15))

次のコードを使用して、平均±SEの値を手動で入力し、エラーバーの制限を設定してみました。簡単にするために、種1のオスの平均= 10およびSE = 0.5と仮定します。

geom_errorbar(aes(ymin=9.5, ymax=10.5),width=.2,position=position_dodge(.9))

このコードは確かに機能しますが、プロットの各バーに同じエラーバーを設定します。

プロット内の各バーに対応するSEに等しいエラーバーを追加するにはどうすればよいですか?

私は一般的にggplotとRにかなり慣れていないので、どんなヘルプ/アドバイスも歓迎します。

4
Stéphane

プロットにstat_summary(geom = "errorbar", fun.data = mean_se, position = "dodge")を追加する以上のことは必要ありません。

library(ggplot2)

ggplot(diamonds, aes(cut, price, fill = color)) +
  stat_summary(geom = "bar", fun.y = mean, position = "dodge") +
  stat_summary(geom = "errorbar", fun.data = mean_se, position = "dodge")

事前に値を計算したい場合は、次のように行うことができます。

library(tidyverse)
pdata <- diamonds %>% 
  group_by(cut, color) %>% 
  summarise(new = list(mean_se(price))) %>% 
  unnest(new)


pdata %>% 
  ggplot(aes(cut, y = y, fill = color)) +
  geom_col(position = "dodge") +
  geom_errorbar(aes(ymin = ymin, ymax = ymax), position = "dodge")
6
Thomas K

geom_errorbar geomを使用して、バープロットにエラーバーを追加できます。

yminymaxを指定する必要があるため、手動で計算する必要があります。

geom_errorbarヘルプページから:

p + geom_errorbar(aes(ymin = lower, ymax = upper), width = 0.2)

コリン

1
Colin FAY