Violinen-Plot in R erstellen

von | Zuletzt bearbeitet am: Mar 25, 2025 | R, R-Diagramme

Ein Violinen-Plot, auch Geigen-Plot genannt, dient zur Darstellung der Verteilung einer Variable. Auf den ersten Blick ähnlich zum Boxplot, ist es aber aufschlussreicher, da es die Dichte der Verteilung darzustellen vermag. Dieser Beitrag zeigt die Erstellung des Geigen-Plots mittels des Paketes ggplot2.

1 Grundlagen

Ein Violinen-Plot kann für eine Variable, wahlweise auch unterteilt nach Gruppen erstellt werden. Ich zeige nachfolgend beide Wege für die Variable Abiturschnitt in meinem Datensatz (Artikel zum Einlesen von Daten).

Sollte das Paket „ggplot2“ noch nicht installiert sein, wird es mit install.packages() installiert und mit und library() geladen.


install.packages("ggplot2")
library(ggplot2)

 

2 Violinen-Plot zeichnen

2.1 Einfacher Violinen-Plot

Zunächst wird mti dem Befehl ggplot() begonnen und mit dem aes()-Argument die abzutragende Variable (hier Abiturschnitt) als x-Variable festgelegt. y=““ wird nur eingefügt, weil es kein gruppiertes Violinen-Plot werden soll. Entscheidend ist dann die Funktion geom_violin(). Das trim-Argument ist nicht zwingend notwendig. Es trimmt die Enden der Verteilung entsprechend auf die Spannweite der Daten. Ich habe es mit trim=FALSE allerdings deselektiert.


ggplot(df, aes(x=Abischni, y=""))+
  geom_violin(trim=TRUE)

Violinen-Plot R

 

2.2 Gruppierter Violinen-Plot

Hier ist es zunächst notwendig, dass die Variable, welche die Gruppe definiert, als Faktor hinterlegt ist. Typischerweise sind numerische Gruppenvariablen als solche auch nur in R hinterlegt. Demzufolge wird meine Variable „Motivat“ zunächst faktorisiert, damit anschließend damit gearbeitet werden kann.


df$Motivat <- as.factor(df$Motivat)

Nun wird das Violinen-Plot ähnlich zu oben gezeichnet. Allerdings wird die y-Variable nun mit der Gruppenvariable definiert. Zusätzlich muss das fill-Argument ebenfalls mit der Gruppenvariable definiert werden.:


ggplot(df, aes(x=Abischni, y=Motivat, fill=Motivat))+
  geom_violin(trim=FALSE)

Violinen-Plot R

 

2.3 Violinen-Plot drehen

Zum Drehen im rechten Winkel wird die coord_flip()-Funktion genutzt:


ggplot(df, aes(x=Abischni, y=Motivat, fill=Motivat))+
  geom_violin(trim=FALSE)+
  coord_flip()

Violinen-Plot R

 

2.4 Achsen des Violinen-Plot beschriften

Um die Achsen korrekt zu beschriften, verwendet man die labs()-Funktion mit den Argumenten y und x:


ggplot(df, aes(x=Abischni, y=Motivat, fill=Motivat))+
  geom_violin(trim=FALSE)+
  coord_flip()+
  labs(y="Motivation", x="Abiturschnitt")

Violinen-Plot R

 

2.5 Grafische Anpassungen

Einige wenige grafische Änderungen am Geigen-Plot kann man noch vornehmen. Mit dem Befehl theme_minimal() oder theme_bw() kann das Diagramm etwas nüchterner gestaltet werden


ggplot(df, aes(x=Abischni, y=Motivat, fill=Motivat))+
  geom_violin(trim=FALSE)+
  coord_flip()+
  labs(y="Motivation", x="Abiturschnitt")+
  theme_bw()

Violinen-Plot R

 

Ein weiterer hilfreicher Befehl ist scale_fill_brewer(). Hier kann z.B. mit palette=“Blues“ oder palette=“Greens“ ein Farbverlauf angewendet werden.


ggplot(df, aes(x=Abischni, y=Motivat, fill=Motivat))+
  geom_violin(trim=FALSE)+
  coord_flip()+
  labs(y="Motivation", x="Abiturschnitt")+
  theme_bw()+
  scale_fill_brewer(palette = "Blues")

Violinen-Plot R
Violinen-Plot R

 

Weitere Argumente für scale_fill_brewer() (kopiert aus der Dokumentation):

  • Diverging
    BrBG, PiYG, PRGn, PuOr, RdBu, RdGy, RdYlBu, RdYlGn, Spectral
  • Qualitative
    Accent, Dark2, Paired, Pastel1, Pastel2, Set1, Set2, Set3<(li>

  • Sequential
    Blues, BuGn, BuPu, GnBu, Greens, Greys, Oranges, OrRd, PuBu, PuBuGn, PuRd, Purples, RdPu, Reds, YlGn, YlGnBu, YlOrBr, YlOrRd<(li>

 

2.6 Datenpunkt hinzufügen

Zusätzlich empfiehlt sich die Hinzunahme der einzelnen Beobachtungen, was mit geom_dotplot() gelingt. Da die Datenpunkte nachträglich über die Violinen gelegt werden, muss der Befehl unbedingt NACH geom_violin() eingesetzt werden.

  • Das Argument binaxis gibt in Anführungszeichen die Achse an, an der das abzutragende Merkmal steht. Bei mir ist das der Abiturschnitt und dieser steht an der x-Achse (Erinnerung, das Diagramm wird anschließend gedreht).
  • Das Argument stackdir gibt an, in welche Richtung die Punkte gestapelt werden. Neben dem von mir verwendeten „center“ gibt es noch „up“ und „down“, was je nach Anwendungsfall sinnvoll sein kann.
  • Das Argument dotsize definiert die Punktgröße, hier z. B. mit 1.5 festgelegt, also leicht vergrößert (Standard: 1).
  • Das Argument fill wird verwendet, um die Punkte auszufüllen. Ohne fill sind die Punkte leer. Wird „fill=1″ verwendet, sind es schwarze Kreise. Wird stattdessen fill=“red“ benutzt, sind die Kreise mit jener Farbe ausgemalt, hier: Rot.
  • Das Argument color definiert die Rahmenfarbe des Datenpunktes und kann hier auch wieder beliebig gewählt werden.
  • Hinweis: bei Farben lieber nüchtern bleiben. 😉

ggplot(df, aes(x=Abischni, y=Motivat, fill=Motivat))+
  geom_violin(trim=FALSE)+
  coord_flip()+
  geom_dotplot(binaxis = "x", stackdir = "center", 
       dotsize = 1.5, fill = 1) +
  labs(y="Motivation", x="Abiturschnitt")+
  theme_bw()+
  scale_fill_brewer(palette = "Blues")

Violinenplot in R mit Datenpunkten für drei Gruppen

 

3 Videotutorial

 

4 Beispieldatensatz zum Download

 

Hat dir der Beitrag geholfen?

Dann würde ich mich über eine kleine Spende freuen, die es mir erlaubt, weiterhin kostenfreie Inhalte zu veröffentlichen.
Alternativ kannst du über meinen Amazon Affiliate-Link einkaufen – ohne Zusatzkosten.

Vielen Dank und viel Erfolg!

Über mich

Björn Walther

Ein 💚 für Statistik & Datenanalyse

Excel Online-Kurs

YouTube-Kanal

Inhalt