Jako przykład podajemy zestaw danych mpg
, w szczególności kolumny class
i cyl
. Widzę ile wpisy są tam na jedną class
, i odróżnić kolor wypełnienia na podstawie wartości cyl:Dane zagregowane za pomocą ggplot
library(ggplot2)
p <- ggplot(mpg)
p <- p + geom_bar(mapping=aes(x=class, fill=factor(cyl)), position=position_dodge())
print(p)
Co chciałbym zobaczyć, chociaż, to średnia liczba wpisów (za class
), według różnych wartości cyl
. Zasadniczo, jeśli spojrzysz na powyższy wykres, chcę mieć pojedynczy słupek na klasę, którego wysokość powinna być średnią wysokością kolorowych pasków dla tej klasy.
jestem w stanie uzyskać ten wynik przez przerób ramkę danych, np:
df <- aggregate(formula=cyl~class, data=mpg, FUN=function(x) { length(x)/length(unique(x)) })
p <- ggplot(df)
p <- p + geom_bar(mapping=aes(x=class, y=cyl), stat='identity')
p <- p + ylab('average count')
Daje moje pożądany wynik:
Jednak biorąc pod uwagę, jak potężny ggplot2 jest , Zastanawiam się, czy jest to możliwe dzięki funkcjom ggplota. Myślę, że to wymaga użycia specyficznego stat
(może z group=cyl
?), Ale nie jestem w stanie.
Daj obejrzenia 'stat_summary' [związek] (http: //docs.ggplot2 .org/current/stat_summary.html) – user3631369
@ user3631369 Gram z tym teraz, ale nie osiągam rezultatów. Nie mogę agregować na polu cyl. – natario