2015-05-12 21 views
9

Mam następujący ramka danych:ggplot2: Działka na myśli 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))) 

i jestem kreślenia wykresów słupkowych na każdej etykiecie jednej grupie stosującej:

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

enter image description here

jednak , Nie jestem w stanie znaleźć stat="mean", więc mogę wykreślić środki na każdym wykresie słupkowym zamiast tożsamości.

Dzięki za pomoc.

+0

Ten poradnik stanowi dobry opis sposobu Aby to osiągnąć: http://www.r-bloggers.com/using-r-barplot-with-ggplot2/ – seaotternerd

+1

możliwy duplikat [Wykreślanie średnich wartości dla każdego poziomu w ggplot2] (http://stackoverflow.com/questions/11857935/plotting-the-average-values-for-each-level-in-ggplot2) – seaotternerd

Odpowiedz

29

prostu użyć stat = "summary" i 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 jest niesamowity i naprawdę elegancki. Dzięki! Czy zdajesz sobie sprawę, jak uzyskać ciemniejsze kolory w miły sposób? – Cauchy

2

lubi 1 punkt danych dla 1 punktu wykresu. Utwórz nową ramkę danych ze statystyk podsumowujących, a następnie wykreślić z 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

Powiązane problemy