Seite 1 von 1

ggplot: Boxplots verschiedener Variablen in einem Diagramm

Verfasst: Mi Jul 05, 2017 5:57 pm
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) 5651 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) 5651 mal betrachtet
Bitte beachtet nicht die fehlenden Achsenbeschriftungen usw.

Hoffe, mir kann jemand helfen.

Viele Grüße
Tina

Re: ggplot: Boxplots verschiedener Variablen in einem Diagramm

Verfasst: Do Jul 06, 2017 12:16 am
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.

Re: ggplot: Boxplots verschiedener Variablen in einem Diagramm

Verfasst: Di Okt 10, 2017 10:49 am
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. ^^