ggplot: Boxplots verschiedener Variablen in einem Diagramm

Wie erstelle ich Grafiken, was ist zu beachten?

Moderatoren: EDi, jogo

Antworten
Tina89

ggplot: Boxplots verschiedener Variablen in einem Diagramm

Beitrag von Tina89 »

Hallo zusammen,
ich möchte im Rahmen meiner Masterarbeit ein Boxplotdiagramm mit ggplot erstellen. Mit der Standardfunktion bekomme ich die Anordnung ohne Probleme so hin, wie ich es mir vorstelle, bloß mit ggplot nicht. Wie bekomme ich die Boxplots von 3 verschiedenen Variablen (Gewicht.t0, Gewicht.t2 und Gewicht.t3) nebeneinander mit einer gemeinsamen y-Achse?

So solls aussehen:

Code: Alles auswählen

boxplot(gesamt$Gewicht.t0,gesamt$Gewicht.t2,gesamt$Gewicht.t3, main ="Gewicht zum Zeitpunkt t0, t2 und t3", ylab = "Gewicht in kg")
Testplot.png
Testplot.png (3.33 KiB) 5543 mal betrachtet

So siehts aus mit ggplot:

Code: Alles auswählen

ggplot(data = gesamt) +
  geom_boxplot(aes(x = Gewicht.t0, y = Gewicht.t0)) +
  geom_boxplot(aes(x = Gewicht.t2, y = Gewicht.t2)) +
  geom_boxplot(aes(x = Gewicht.t3, y = Gewicht.t3))
Testplot ggplot.png
Testplot ggplot.png (3.02 KiB) 5543 mal betrachtet
Bitte beachtet nicht die fehlenden Achsenbeschriftungen usw.

Hoffe, mir kann jemand helfen.

Viele Grüße
Tina
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: ggplot: Boxplots verschiedener Variablen in einem Diagramm

Beitrag von EDi »

Ohne ein reproduziebares Beispiel kann ich nur verbos antworten:

Du musst die Daten in lange Format bringen (via plyr::melt() oder tidyr::gather()) und dann den zeitpunkt als x-variable nehmen.
ggplot braucht die daten im langen Format.
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
Mithos

Re: ggplot: Boxplots verschiedener Variablen in einem Diagramm

Beitrag von Mithos »

Hallo Tina,

bei meinen Boxplots mit ggplot sieht die Eingabe so aus:

Code: Alles auswählen

ggplot(my.data,aes(enzymes,riBAQ,fill=substrate))+
  geom_boxplot+
Dazu muss ich sagen, dass enzymes bei mir die einzelnen Enzyme sind, die auf der X-Achse dargestellt werden, riBAQ der Wert der Y-Achse und substrate dann noch unterschiedliche Werte für jedes Enzym (ich hab sozusagen 3 Boxen pro Enzym).

In deinem Fall würde ich mal versuchen, als Input-Datei eine Text Datei zu erstellen mit 2 Spalten. Eine mit den Werte für die X-Achse und eine für die Y-Achse. Ich weiß ja nicht genau, wie deine Werte aussehen, aber es könnte dann so aussehen:

Code: Alles auswählen

Variablen         Gewicht
t0                     8
t0                     4
t0                     5
t2                     10
t2                     11
t2                     14
t3                     14
t3                     23
t3                     21


So stelle ich mir gerade deine Daten vor und aus Zeitgründen hab ich mal 3 Werte pro Zeitpunkt ausgewählt.

Für den Import könntest du folgenden Befehl benutzen:

Code: Alles auswählen

TinasDaten<-read.table("Gewicht.txt",sep="\t",header=TRUE)
#deine Textdatei müsste in dem Fall natürlich Gewicht.txt heißen

Dein Script nach dem Data-Import könnte dann lauten:

Code: Alles auswählen

ggplot(TinasDaten,aes(Variablen,Gewicht))+
  geom_boxplot+
scale_x_discrete(limits=c("t0","t2","t3"))
# das ist dafür, dass du auf der X-Achse dann chronologisch die Reihenfolge t0, t2 und t3 hast.

Vielleicht kann das helfen, sofern das Thema noch aktuell ist. Nächstes Mal am besten mehr Daten preisgeben und ein Minimalbeispiel aufführen. ^^
Antworten