In diesem Boxplot können wir den Mittelwert sehen, aber wie können wir auch den Zahlenwert auf dem Plot für jeden Mittelwert jedes Boxplots haben?
ggplot(data=PlantGrowth, aes(x=group, y=weight, fill=group)) + geom_boxplot() +
stat_summary(fun.y=mean, colour="darkred", geom="point",
shape=18, size=3,show_guide = FALSE)
Antworten:
Zunächst können Sie die Gruppenmittelwerte berechnen mit
aggregate
:Dieser Datensatz kann verwendet werden mit
geom_text
:library(ggplot2) ggplot(data=PlantGrowth, aes(x=group, y=weight, fill=group)) + geom_boxplot() + stat_summary(fun.y=mean, colour="darkred", geom="point", shape=18, size=3,show_guide = FALSE) + geom_text(data = means, aes(label = weight, y = weight + 0.08))
Hier
+ 0.08
wird die Beschriftung über dem Punkt platziert, der den Mittelwert darstellt.Eine alternative Version ohne
ggplot2
:means <- aggregate(weight ~ group, PlantGrowth, mean) boxplot(weight ~ group, PlantGrowth) points(1:3, means$weight, col = "red") text(1:3, means$weight + 0.08, labels = means$weight)
quelle
geom_text(data = means, aes(label = round(weight, 1), y = weight + 0.08), size = 3)
kleineren Text mit 1 Dezimalstelle.position = position_dodge(width = 3/4)
zustat_summary
.Sie können den Ausgabewert von verwenden
stat_summary()
ggplot(data=PlantGrowth, aes(x=group, y=weight, fill=group)) + geom_boxplot() + stat_summary(fun.y=mean, colour="darkred", geom="point", hape=18, size=3,show_guide = FALSE) + stat_summary(fun.y=mean, colour="red", geom="text", show_guide = FALSE, vjust=-0.7, aes( label=round(..y.., digits=1)))
quelle
stat_summary()
& hinzugefügt habe,fill=x
aber diesen Fehler erhalten habe:Error: Unknown parameters: hape In addition: Warning message:show_guide has been deprecated. Please use show.legend instead.
Was ist in Ihrem Code falsch?Sie können auch eine Funktion in stat_summary verwenden, um den Mittelwert und das Argument hjust zu berechnen, um den Text zu platzieren. Sie benötigen eine zusätzliche Funktion, aber keinen zusätzlichen Datenrahmen:
fun_mean <- function(x){ return(data.frame(y=mean(x),label=mean(x,na.rm=T)))} ggplot(PlantGrowth,aes(x=group,y=weight)) + geom_boxplot(aes(fill=group)) + stat_summary(fun.y = mean, geom="point",colour="darkred", size=3) + stat_summary(fun.data = fun_mean, geom="text", vjust=-0.7)
quelle
Der Magrittr-Weg
Ich weiß, dass es bereits eine akzeptierte Antwort gibt, aber ich wollte mit Hilfe des magrittr- Pakets einen coolen Weg zeigen, dies in einem einzigen Befehl zu tun .
PlantGrowth %$% # open dataset and make colnames accessible with '$' split(weight,group) %T>% # split by group and side-pipe it into boxplot boxplot %>% # plot lapply(mean) %>% # data from split can still be used thanks to side-pipe '%T>%' unlist %T>% # convert to atomic and side-pipe it to points points(pch=18) %>% # add points for means to the boxplot text(x=.+0.06,labels=.) # use the values to print text
Dieser Code erzeugt ein Boxplot mit Mitteln, die als Punkte und Werte gedruckt werden:
Ich habe den Befehl in mehrere Zeilen aufgeteilt, damit ich kommentieren kann, was jeder Teil tut, aber er kann auch als Oneliner eingegeben werden. Mehr dazu erfahren Sie in meinem Kern .
quelle