Seite 1 von 1

Mittelwert "als Zahl" im Plot anzeigen

Verfasst: Mi Mär 24, 2021 8:07 pm
von Walt17
Hallo zusammen!

ich beschäftige mich nun seit fast zwei Wochen mit R (daher seht es mir nach, wenn ich das Ganze auch einfacher hätte konstruieren können, als den Datensatz mithochzuladen...) und habe mir zum Ziel gesetzt einen aussagekräftigen Plot zu erstellen.

Hier in dem Beispiel vergleiche ich die Variablen "Geschlecht" und "Gewicht" aber auf Gruppenebene: Gruppe Male und Gruppe Female.

Das Ganze stelle ich in Form von Boxplots dar. Zusätzlich habe ich durch die summary Funktion die jeweiligen Mittelwerte (grüner Punkt) aufgetragen. Nun habe ich direkt auf einem Blick meinen Median und Mittelwert. Ich würde mir wünschen, dass zusätzlich durch ein Label der jeweilige Mittelwert neben dem Punkt angezeigt wird. Der aktuelle Code sieht folgendermaßen aus:

Code: Alles auswählen

```{r}

```{r setup, include=FALSE}
knitr::opts_chunk$set(
	echo = TRUE,
	message = FALSE,
	warning = FALSE)
```

#Bibliotheken
```{r}
library(car)
library(foreign)
library(pander)
library(descr)
library(psych)
library(ggplot2)
library(plotly)
library(mosaic)
library(pastecs)
```

#Datei einlesen
```{r}
df <- read.csv2("data_bsp_bmi2.csv")
attach(df)
```

# männlich und weiblich Gruppen erstellen
```{r}
groupM <- subset(df,Geschlecht == 0)
groupF <- subset(df,Geschlecht == 1)
```

#Statistische Daten zu den Gruppen
```{r}
pander(describe(groupF))
pander(describe(groupM))
```

#Boxplot + Mittelwert + Labels am Mittelwert?
```{r}
abb1 <- ggplot(subs, aes(y = gender, x = Gewicht, color = gender)) +
  labs(x="Gewicht", y="Geschlecht")+
  geom_boxplot()+
  stat_summary(fun=mean, geom="point", shape=20, size=5, color="green", fill="green") +
  theme_classic()+
  theme(panel.grid.major.x = element_line(color = "#000000",size = 1, linetype = "dotted"))
abb1
```


Habt ihr alten Hasen eventuell noch weitere gute Ideen? Ansonsten kann ich mir gut vorstellen, dass es von der jeweiligen Fragestellung abhängt was schick zu haben wäre, aber es gibt da ja ein paar "allgemein wichtige" Kennzahlen, die man zusätzlich in die obere rechte Eck schreiben könnte (falls möglich)

Danke fürs Lesen :)


[/code]

Re: Mittelwert "als Zahl" im Plot anzeigen

Verfasst: Do Mär 25, 2021 10:27 am
von student
Hallo Walt17,

ich habe da mal hier (ab Minute 6:47) etwas gemacht, was in Deine Richtung geht. Vielleicht hilft es Dir....

Re: Mittelwert "als Zahl" im Plot anzeigen

Verfasst: Do Mär 25, 2021 6:08 pm
von bigben
geom_label() ist Dir bekannt?

Re: Mittelwert "als Zahl" im Plot anzeigen

Verfasst: Do Mär 25, 2021 8:47 pm
von jogo
Hallo Walt,

willkommen im Forum!
Walt17 hat geschrieben: Mi Mär 24, 2021 8:07 pm

Code: Alles auswählen

# ...
df <- read.csv2("data_bsp_bmi2.csv")
attach(df)
# ...
Habt ihr alten Hasen eventuell noch weitere gute Ideen?
Hier ist noch ein guter Rat:
viewtopic.php?f=7&t=5

Gruß, Jörg

Re: Mittelwert "als Zahl" im Plot anzeigen

Verfasst: Fr Mär 26, 2021 11:50 am
von Walt17
Hallo zusammen,

erst einmal Danke für die Antworten!

@student: leider beantworte es meine vorrangig gestellte Frage nicht, dennoch Danke für das Video!

@bigben: nicht sicher, ob es eine rhetorische Frage war, aber nein, mir ist aktuell noch nicht so viel innerhalb von R bekannt und somit kannte ich auch geom_label() bisher noch nicht. Ich habe mal auf die schnelle etwas mit dieser Funktion versucht, noch ist mir aber nichts gelungen... (an welche Stelle, wie verschachteln ...)

@Jörg vielen Dank, auch für den Rat bezüglich attach! :-)

Re: Mittelwert "als Zahl" im Plot anzeigen

Verfasst: Fr Mär 26, 2021 1:29 pm
von bigben
Nein, keine rhetorische Frage. geom_text und geom_label sind Elemente des Grafiksystems ggplot2 mit denen man Text oder eben auch Zahlen in Grafiken einfügen kann. Hier ein lauffähiges Minimalbeispiel, in dem Mittelwert in Boxplots eingetragen werden:

Code: Alles auswählen

library(ggplot2)
library(mosaic)
bsp <- data.frame(klasse = gl(3,10), werte = rbeta(30,1,8))  # das sind zufällige Beispieldaten
means <- round(mean(bsp$werte ~ bsp$klasse),2)
means <- data.frame(klasse = names(means), mittelwerte = means)
ggplot(bsp) +
  geom_boxplot(aes(x=klasse, y = werte)) + 
  geom_label(aes(x=klasse, y= mittelwerte, label = mittelwerte), means) +
  geom_label(aes(x=2.5, y = .3, label = "Hallo !"))
LG,
Bernhard