2017-02-21 3 views
0

Ich versuche ein Violin-Plot für eine Datenbank mit einer abhängigen Variablen und drei Faktoren (CHANGE_TYPE, IA_TYPE, PRESENTATION) zu erstellen. Ich kann eine Geige Stück mit 4 Violinen schaffen mit:Kombinieren von Violin-Plots in R

p <- ggplot(data, aes(factor(CHANGE_TYPE), mean_reading_rate)) 
p <- p + geom_violin(aes(fill = IA_TYPE)) 

welche erzeugt folgendes:

Violin plot 1

jedoch, dass ein Faktor auslässt. Ich möchte zwei solche Diagramme horizontal zusammenführen, so dass sie sich eine weitere, breitere X-Achse teilen, die die Werte des Faktors PRÄSENTATION zeigt (was momentan nur gemittelt wird, vermute ich).

Irgendeine Idee, wie ich das erreichen könnte?

BEARBEITEN: Entschuldigung für die Daten nicht enthalten. Es sieht ungefähr so ​​aus.

Participant CHANGE_TYPE PRESENTATION IA_TYPE mean_reading_rate stdev_reading_rate 
     1 Accidental   1 non_target   80.73478   83.58174 
     1 Accidental   1  target   50.50102   32.69693 
     1 Accidental   2 non_target   73.10850   78.39836 
     1 Accidental   2  target   54.38447   45.92599 
     1 Substantive   1 non_target   68.96310   64.04057 
     1 Substantive   1  target   63.66268   25.35560 
     1 Substantive   2 non_target   60.08031   71.11967 
     1 Substantive   2  target   66.63825   59.14888 
     2 Accidental   1 non_target   56.52367   61.98396 
     2 Accidental   1  target   44.49227   40.71171 
     2 Accidental   2 non_target   68.21995   79.33617 
     2 Accidental   2  target   47.27487   28.70954 
     2 Substantive   1 non_target   53.29330   65.13060 
     2 Substantive   1  target   33.96295   21.49306 
     2 Substantive   2 non_target   51.28319   62.61050 
     2 Substantive   2  target   59.85926   63.77074 
     3 Accidental   1 non_target   56.25112   64.13430 
     3 Accidental   1  target   34.22665   18.58870 
     3 Accidental   2 non_target   47.78169   64.05134 
     3 Accidental   2  target   45.62304   79.84651 
     3 Substantive   1 non_target   54.82215   69.43809 
     3 Substantive   1  target   39.66745   22.40827 
     3 Substantive   2 non_target   40.58735   61.09965 
     3 Substantive   2  target   73.39946   80.98760 

CHANGE_TYPE, PRÄSENTATION und IA_TYPE sind Faktoren mit jeweils zwei Ebenen.

+0

Sie 'facet_grid' mit einer Formel verwenden möchten wie' . PRÄSENTATION. Um Ihnen einen Beispieldatensatz besser zu helfen, wäre es sehr zu begrüßen. – Wietze314

+0

[Wie man ein großartiges reproduzierbares Beispiel macht?] (Http://stackoverflow.com/questions/5963269) – zx8754

+0

@ Wietze314: Mein Schlechter, ich habe jetzt ein paar Zeilen des Datensatzes aufgenommen, um Ihnen eine Idee zu geben. – user3010126

Antwort

0

Die Lösung besteht darin, vor dem Plotten zwei Variablen in einem x-Achsenfaktor zu kombinieren. Sie brauchen nicht zwei Parzellen anschließend zu zeichnen, weil mit ggplot es mehrere Optionen sind dies in einem Schritt zu tun:

Die Daten:

str <- ' 
Participant CHANGE_TYPE PRESENTATION IA_TYPE mean_reading_rate stdev_reading_rate 
1 Accidental   1 non_target   80.73478   83.58174 
1 Accidental   1  target   50.50102   32.69693 
1 Accidental   2 non_target   73.10850   78.39836 
1 Accidental   2  target   54.38447   45.92599 
1 Substantive   1 non_target   68.96310   64.04057 
1 Substantive   1  target   63.66268   25.35560 
1 Substantive   2 non_target   60.08031   71.11967 
1 Substantive   2  target   66.63825   59.14888 
2 Accidental   1 non_target   56.52367   61.98396 
2 Accidental   1  target   44.49227   40.71171 
2 Accidental   2 non_target   68.21995   79.33617 
2 Accidental   2  target   47.27487   28.70954 
2 Substantive   1 non_target   53.29330   65.13060 
2 Substantive   1  target   33.96295   21.49306 
2 Substantive   2 non_target   51.28319   62.61050 
2 Substantive   2  target   59.85926   63.77074 
3 Accidental   1 non_target   56.25112   64.13430 
3 Accidental   1  target   34.22665   18.58870 
3 Accidental   2 non_target   47.78169   64.05134 
3 Accidental   2  target   45.62304   79.84651 
3 Substantive   1 non_target   54.82215   69.43809 
3 Substantive   1  target   39.66745   22.40827 
3 Substantive   2 non_target   40.58735   61.09965 
3 Substantive   2  target   73.39946   80.98760 
' 

file <- textConnection(str) 

data <- read.table(file, header = T) 

Die Plots:

library(ggplot2) 

Lösung 1 verwenden facet_grid

p <- ggplot(data, aes(factor(CHANGE_TYPE), mean_reading_rate)) 
p <- p + geom_violin(aes(fill = IA_TYPE)) 
p + facet_grid(.~PRESENTATION) 

Lösung 2 verwenden interaction zwischen den beiden Faktoren von Interesse

ggplot(data, aes(factor(interaction(CHANGE_TYPE,PRESENTATION)), mean_reading_rate)) + 
    geom_violin(aes(fill = IA_TYPE)) 

Lösung 1 solution 1 Lösung 2 solution 2