Seite 1 von 1
Mittelwerte zu Boxplot verschieben
Verfasst: Do Okt 10, 2019 9:17 am
von farngarten
HAllo ,
wie kann ich bei einem geschachtelten Boxplot (Religion auf der x Achse nach Frauen und Männern getrennt) die Mittelwert-Punkte nach links und rechts verschieben, dass sie genau im jeweiligen Boxplot liegen? Danke und Grüße Martin
Code: Alles auswählen
ggplot(k_mw, aes(x = k_mw$v_311, y = k_mw$v_312, fill = k_mw$v_1)) +
stat_boxplot(geom ='errorbar') +
geom_boxplot() +
ggtitle("Enge Freunde nach Religion u Geschlecht") +
scale_y_continuous(name = "Enge Freunde") +
scale_x_discrete(name = "Religion") +
scale_fill_manual(values = c("lightblue", "#0000ff")) +
geom_boxplot() +
stat_summary(fun.y=mean, geom="point", color="red", size = 2) #Mittelwert als roten Punkt einblenden#
Re: Mittelwerte zu Boxplot verschieben
Verfasst: Do Okt 10, 2019 5:52 pm
von Hufeisen
Die Lösung ist zum Augenrollen: In stat_summary muss man die Punkte verschieben (siehe Code). Intuitiv ist es nicht und aus der Hilfe geht es nicht hervor. Habe ich per google so gefunden.
Code: Alles auswählen
# Punkte auf x-Achse verschoben
ggplot(mtcars, aes(x = as.factor(cyl), y = qsec, fill = as.factor(am))) +
stat_boxplot(geom ='errorbar') +
geom_boxplot() +
ggtitle("mtcars") +
scale_y_continuous(name = "Viertelmeile") +
scale_x_discrete(name = "Zylinder") +
scale_fill_manual(values = c("lightblue", "#0000ff")) +
geom_boxplot() +
stat_summary(fun.y=mean, geom="point", color="red", size = 2) #Mittelwert als roten Punkt einblenden#
# Punkte zentriert
ggplot(mtcars, aes(x = as.factor(cyl), y = qsec, fill = as.factor(am))) +
stat_boxplot(geom ='errorbar') +
geom_boxplot() +
ggtitle("mtcars") +
scale_y_continuous(name = "Viertelmeile") +
scale_x_discrete(name = "Zylinder") +
scale_fill_manual(values = c("lightblue", "#0000ff")) +
geom_boxplot() +
stat_summary(fun.y=mean, geom="point", color="red", size = 2, position = position_dodge(width = .75)) #Mittelwert als roten Punkt einblenden#
Re: Mittelwerte zu Boxplot verschieben
Verfasst: Fr Okt 11, 2019 10:46 am
von farngarten
ah ok, ich probier das. Wenns krickelig wird, lass ich es , Mittelwerte sind bei dieser Darstellung nicht so wichtig. wäre aber schön gewesen. Danke!
Re: Mittelwerte zu Boxplot verschieben
Verfasst: Fr Okt 11, 2019 12:07 pm
von Hufeisen
Vielleicht wäre base R eine Alternative? Der Zahlensalat in der X-Achsenbeschriftung lässt sich leicht durch Deine Religionen ersetzen (siehe Kommentar im Code).
Code: Alles auswählen
# base R
# Ein einfacher Boxplot
boxplot(data = mtcars, qsec ~ am:cyl,
col = c("lightblue", "blue"),
xlab = "Zylinder", ylab = "Zeit auf der Viertelmeile")
# names = c("test1", "test2", "test3", "test4", "test5", "test6") # mit dem Argument names kann deine Religion eingetragen werden
# Gruppenmittelwerte
tapply(X = mtcars$qsec, INDEX = list(mtcars$am, mtcars$cyl), FUN = mean)
# 0 1
# 4 20.9700 18.45000
# 6 19.2150 16.32667
# 8 17.1425 14.55000
mean_points <- tapply(X = mtcars$qsec, INDEX = list(mtcars$am, mtcars$cyl), mean)
# zum Boxplot hinzufügen
points(x = c(1:(dim(mean_points)[1] * dim(mean_points)[2])), y = mean_points, pch = 16, cex = 1.5, col = "red") # komplizierte Berechnung der Anzahl an Punkten auf der x-Achse. Das geht bestimmt eleganter, simpel ist "x = c(1:6)".
# mit Legende
legend("top", c("automatic", "manual"),
fill = c("lightblue", "blue"))
Re: Mittelwerte zu Boxplot verschieben
Verfasst: So Okt 13, 2019 1:51 pm
von farngarten
ich kuck mal.