2013-04-15 38 views
6

我對R和ggplot相當陌生。用不同顏色爲多個組生成ggplot2 boxplot

我想生成一個boxplot排序的兩個變量。在我的案例物種和實驗。 我得到了迄今使用

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

是我種的箱圖和每個物種都有2個酒吧,每個實驗。

我的問題是現在,是否有可能以這種方式改變顏色,我有不同的顏色每個物種,並可以說,這些顏色的實驗陰影不同?

比方說,第一個物種將超過有深色和淺色藍條,第二深和淺綠色酒吧等

的數據是一個CSV文件的形式,看起來像這樣:

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 

回答

9

您應該使用interaction()fill=並提供內部interaction()SpeciesExperiment。然後用scale_fill_manual()您可以爲您需要的顏色設置values=(顏色數量對應箱形圖的數量)。顏色順序爲:Species的顏色爲Autumn,顏色爲Species,顏色爲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

真棒。非常感謝你。這解決了我的問題。 – tim

+0

@Didzis Elferts,感謝這個有用的例子!想要問: 1.是否有可能增加物種之間的空間(我使用我的數據的情節太密集); 2.如何將顏色代碼用於「實驗」(情節中有2種不同的顏色('Autumn','Spring'),並且它們對於每個物種都是相同的)? – PoGibas