2015-05-12 24 views
9

ho la seguente struttura dati:ggplot2: Plot dire con geom_bar

test2 <- data.frame(groups = c(rep("group1",4), rep("group2",4)), 
    X2 = c(rnorm(4), rnorm(4)) , 
    label = c(rep(1,2),rep(2,2),rep(1,2),rep(2,2))) 

e sto tracciando i grafici a barre per ciascuna etichetta per gruppo utilizzando:

ggplot(test2, aes(label, X2, fill=as.factor(groups))) + 
    geom_bar(position="dodge", stat="identity") 

enter image description here

Tuttavia , Io non riesco a trovare uno stat="mean" così posso tracciare i mezzi su ogni istogramma invece dell'identità.

Grazie per qualsiasi aiuto.

+0

Questo tutorial fornisce una buona descrizione di come per ottenere ciò: http://www.r-bloggers.com/using-r-barplot-with-ggplot2/ – seaotternerd

+1

possibile duplicato di [Tracciare i valori medi per ogni livello in ggplot2] (http://stackoverflow.com/questions/11857935/plotting-the-average-values-for-each-level-in-ggplot2) – seaotternerd

risposta

29

semplicemente utilizzare stat = "summary" e fun.y = "mean"

ggplot(test2) + 
    geom_bar(aes(label, X2, fill = as.factor(groups)), 
      position = "dodge", stat = "summary", fun.y = "mean") 

enter image description here

+0

Wow this è fantastico e davvero elegante. Grazie! Ti capita di sapere come ottenere colori più scuri in un modo carino? – Cauchy

2

ggplot2 likes 1 punto dati per 1 punto di trama. Creare una nuova cornice di dati con le statistiche riassuntive, poi trama con stat="identity"

require(reshape2) 
plot.data <- melt(tapply(test2$X2, test2$groups,mean), varnames="group", value.name="mean") 

ggplot(plot.data, aes(x=group,y=mean)) + geom_bar(position="dodge", stat="identity") 

enter image description here

Problemi correlati