2013-04-15 9 views
6

Ich bin ziemlich neu in R und ggplot.Erstelle ggplot2 Boxplot mit verschiedenen Farben für mehrere Gruppen

Ich versuche, einen Boxplot nach zwei Variablen zu erzeugen. In meinem Fall Spezies und Experiment. Was ich mit

so weit gekommen
ggplot(DF, aes(Species, Protein, fill=Experiment, dodge=Experiment)) + 
    stat_boxplot(geom ='errorbar')+ 
    geom_boxplot() 

sind Boxplots meiner Art und jede Art hat 2 Bars, eine für jedes Experiment.

Meine Frage ist jetzt, ist es möglich, die Farben auf diese Weise zu ändern, dass ich verschiedene Farben pro Spezies habe und sagen wir, unterschiedliche Schattierung dieser Farben für die Experimente?

Lassen Sie uns sagen, die erste Spezies als eine dunkle und hellblauen Balken haben würde, die zweite eine dunkle und helle grüne Balken usw.

Die Daten werden in Form einer CSV-Datei und sieht wie folgt aus:

Experiment,Species,Protein 
Spring,D_strigosa,5.107767364 
Spring,D_strigosa,8.288980741 
Spring,D_strigosa,7.537376567 
Spring,D_strigosa,4.811744241 
Spring,D_strigosa,9.559043454 
Spring,M_cavernosa,13.66759289 
Spring,M_cavernosa,23.54880195 
Spring,M_cavernosa,11.00790037 
Spring,M_cavernosa,13.70597973 
Spring,M_cavernosa,12.26970906 
Spring,M_faveolata,9.559043454 
Spring,M_faveolata,4.135860474 
Spring,M_faveolata,4.557306615 
Spring,M_faveolata,7.621872315 
Spring,M_faveolata,6.016859956 
Spring,M_annularis,6.294920733 
Spring,M_annularis,5.163371831 
Spring,M_annularis,2.177243143 
Spring,M_annularis,3.55966551 
Autumn,D_strigosa,3.709978392 
Autumn,D_strigosa,7.192777836 
Autumn,D_strigosa,5.31544441 
Autumn,D_strigosa,6.578602058 
Autumn,D_strigosa,5.610085559 
Autumn,M_cavernosa,11.64182554 
Autumn,M_cavernosa,10.44968102 
Autumn,M_cavernosa,9.377389318 
Autumn,M_cavernosa,10.99346107 
Autumn,M_cavernosa,11.5676896 
Autumn,M_faveolata,4.638054165 
Autumn,M_faveolata,7.191664953 
Autumn,M_faveolata,6.981827102 
Autumn,M_faveolata,6.386452477 
Autumn,M_annularis,4.709770404 
Autumn,M_annularis,3.554071459 
Autumn,M_annularis,4.596686351 
Autumn,M_annularis,3.530585628 

Antwort

9

Sie sollten interaction() für die fill= verwenden und sowohl Species und Experiment innerhalb interaction() bieten. Dann können Sie mit scale_fill_manual()values= für die Farben einstellen, die Sie benötigen (die Anzahl der Farben entspricht der Anzahl der Box-Plots). Reihenfolge der Farben ist, zuerst, Farben für Species in Autumn dann Farben für Species in Spring.

ggplot(DF, aes(Species, Protein, fill=interaction(Species,Experiment), dodge=Experiment)) + 
    stat_boxplot(geom ='errorbar')+ 
    geom_boxplot()+ 
    scale_fill_manual(values=c("blue","green","red","cyan", 
      + "darkblue","darkgreen","darkred","darkcyan")) 

enter image description here

+0

ehrfürchtig. Vielen Dank. Das hat mein Problem gelöst. – tim

+0

@Didzis Elferts, danke für dieses nützliche Beispiel! Wollte fragen: 1. Ist es möglich, Räume zwischen den Arten zu erhöhen (Handlung, die ich mit meinen Daten zu dicht ist); 2. Wie verwende ich den Farbcode für "Experimente" (2 verschiedene Farben in der Handlung ("Herbst", "Frühling") und sie sind für jede Spezies gleich)? – PoGibas