2017-10-13 4 views
0

Je veux faire un graphique similaire à celui joint par Lindfield et al. 2016. Je suis familier avec la commande ggplot en R avec le format:Comment créer un diagramme à barres en R avec un écart-type cumulé?

ggplot(dataframe, aes(x, y)) + geom_bar(stat = 'identity') 

Cependant, je ne sais pas comment faire une erreur se cumulatif pour un barplot empilés; un seul qui utilise une commande position_dodge.

Je sais qu'il y a des inconvénients à utiliser des barres empilées avec des erreurs, mais pour mon ensemble de données, il est plus présentable que d'utiliser les barres de barres désempilées.

Merci.

enter image description here

Répondre

0

Je ne sais pas comment vous obtenez les erreurs standard cumulatives de manière appropriée (je suppose que cela dépend de la façon dont vos valeurs sont générées) mais je pense que vous devez faire les calculer et les stocker dans un second DF, par exemple si vous avez un data.frame initial créé comme ceci:

DF <- data.frame(x=c("a","a","b","b"), 
        sp=c("shark","cod","shark","cod"), 
        y=c(10,5,15,7), 
        stringsAsFactors=FALSE) 

où y est la valeur associée à chaque espèce à chaque point x, alors vous créer un deuxième DF contenant la partie inférieure et les limites supérieures de votre se pour chaque valeur de x, par exemple

seDF <- data.frame(x=c('a','b'), 
        yl=c(12,18), 
        yu=c(17,24), 
        stringsAsFactors=FALSE) 

Ensuite, vous pouvez créer votre parcelle avec:

ggplot() + 
geom_bar(data=DF, mapping=aes(x=x,y=y,fill=sp), 
      position="stack", stat="identity") + 
geom_linerange(data=seDF, mapping=aes(x=x, ymin=yl, ymax=yu)) 

je geom_linerange plutôt que geom_errorbar car il ne crée pas croisillons à chaque extrémité.

Output of example code

+0

@ tim-Quimpo Est-ce que cela résoudre le problème? Ou la question portait-elle vraiment sur la façon d'obtenir les erreurs-types cumulatives? – rec29

+0

Désolé pour la réponse tardive. Je comprends la logique des codes, et je pense que cela fonctionnera pour moi. Cependant, pouvez-vous montrer à nouveau comment vous avez créé les valeurs min y et max y? Le code du paragraphe 2 est le code exact du paragraphe 1. Dans votre commande ggplot, vous disposez d'une structure de données qui permet de créer et de mapper des éléments esthétiques tels que y1 et yu. –

+0

Désolé Tim. Copiez et collez l'erreur. J'ai édité ma réponse pour inclure réellement la création/structure de seDF. La création des valeurs min et max peut dépendre de la manière dont vous avez estimé les valeurs présentées. Il serait peut-être possible d'obtenir le s.e. pour les sommes de coefficients de n'importe quelle routine que vous avez utilisée pour faire votre analyse, ou vous pourriez avoir besoin de les estimer en utilisant une matrice de variance-covariance entre les paramètres.J'ai juste fait des nombres à des fins de graphique démo – rec29