2017-07-02 3 views
0

J'ai fait un simple barplot avec ggplot2 comparant la durée de vie moyenne (âge) des mâles et des femelles pour 2 espèces d'insectes. Mon code ressemble à ceci, avec « ensemble de données » étant, bien, mon jeu de données ...Comment ajouter des barres d'erreur SE à mon barplot dans 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)) 

J'ai essayé d'utiliser le code suivant pour entrer manuellement la valeur de la moyenne ± SE pour définir les limites de la Barre d'erreur. Par souci de simplicité, supposons que la moyenne = 10 et SE = 0,5 pour les mâles d'espèces1.

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

Ce code fonctionne effectivement, mais il définit les mêmes barres d'erreur pour chaque barre de mon tracé.

Comment puis-je ajouter des barres d'erreur égales au SE correspondant pour chaque barre de mon tracé? Je suis assez nouveau pour ggplot et R en général donc toute aide/conseil est la bienvenue.

+0

Vous devez d'abord calculer les erreurs et des moyens pour chaque barre et les muter dans votre ensemble de données. puis définissez 'ymin' et' ymax' sur ces colonnes. – Masoud

+0

Cela peut vous aider. http://environmentalcomputing.net/plotting-with-ggplot-bar-plots-with-error-bars/ – Masoud

+0

Je n'arrive pas à faire fonctionner 'ymin' et' ymax' correctement. J'ai suivi le lien que vous avez fourni et essayé l'exemple avec les données de l'iris et cela ne fonctionne pas non plus ... Je ne peux pas me passer de 'group_by (Species)'. Le message d'erreur suivant s'affiche: Erreur dans UseMethod ("group_by_"): aucune méthode applicable pour "group_by_" appliquée à un objet de classe "facteur". –

Répondre

2

Vous n'avez pas besoin de plus pour ajouter stat_summary(geom = "errorbar", fun.data = mean_se, position = "dodge") à votre terrain:

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") 

Si vous préférez calculer les valeurs à l'avance, vous pouvez le faire comme ceci:

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") 
+0

La ligne de code que vous m'avez suggéré d'ajouter a fonctionné. Je vous remercie. –

0

Vous pouvez ajouter une barre d'erreur sur votre barre d'outils avec la géométrie geom_errorbar. Vous devez fournir les codes ymin et ymax, vous devez donc le calculer manuellement.

De la page d'aide geom_errorbar:

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

Colin