2013-04-15 4 views
6

Jestem całkiem nowy dla R i ggplota.Generowanie boxgrafu ggplot2 z różnymi kolorami dla wielu grup

Próbuję wygenerować boxplot posortowany według dwóch zmiennych. W moim przypadku gatunek i eksperyment. Co mam tak daleko za pomocą

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

są boxplots moich gatunków i każdy gatunek ma 2 bary, jeden dla każdego eksperymentu.

Moje pytanie brzmi teraz, czy można zmienić kolory w ten sposób, że mam różne kolory dla każdego gatunku i powiedzmy, że różne odcienie tych kolorów dla eksperymentów?

Powiedzmy, pierwszy gatunek by nie mają jasnych i ciemnych niebieski pasek, drugi ciemny i jasny zielony pasek itp

Dane są w postaci pliku csv i wygląda następująco:

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 

Odpowiedz

9

należy użyć interaction() dla fill= i zapewniają zarówno Species i Experiment wewnątrz interaction(). Następnie za pomocą scale_fill_manual() można ustawić values= dla potrzebnych kolorów (liczba kolorów odpowiada liczbie pudełek). Kolejność kolorów to, po pierwsze, kolory dla Species w Autumn, a następnie kolory dla Species w 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

niesamowite. Dziękuję Ci bardzo. To rozwiązało mój problem. – tim

+0

@Didzis Elferts, dzięki za ten użyteczny przykład! Chciał (a) bym zapytać: 1. Czy możliwe jest powiększenie przestrzeni między gatunkami (działka, której użyłem, że moje dane są zbyt gęste); 2. Jak używać kodu koloru do "Eksperymentów" (2 różne kolory na wydruku ("Jesień", "Wiosna") i są one takie same dla każdego gatunku)? – PoGibas