2017-10-17 67 views
0

什麼我有什麼,我想:如何爲ggplot2 geom添加僞美學參數?

data<- data.frame(value= 1:10, Treatment= rep(c("A", "B"),5), Species=rep(c("alpha", "beta"), each=5)) 

而且它可以自動對數據進行分組,根據其報價,例如參數,ggplot(data=data)+geom_boxplot(aes(y= value, x= Treatment, fill=Treatment))分離和組數據由Treatmentplot1

衆所周知, ggplot2::aes()功能

並繪製爲不同的盒子。以類似的方式,ggplot(data=data)+geom_boxplot(aes(y= value, x= Treatment, fill=Treatment, linetype= Species))將生成由Teatment和Species分組的盒子分別具有不同的填色和線型plot2

然而,如何生成的由TreatmentSpecies分組盒,其中Treatment通過填充顏色與上述相同的文件檔案化的情節呈現的箱線圖,但種類不呈現,即,線型是所有的相同的盒子?換句話說,是否有一種空的審美只將數據分組,而不會在情節中呈現。

+0

這裏有一組審美 – baptiste

+0

我試過了,'group'參數破壞了其他美學的分組和顏色填充,最終導致一個普通的單色圖只呈現aes(group =物種)。 –

回答

1

您的意思是?

ggplot(data=data)+ 
    geom_boxplot(aes(y= value, x= Treatment, fill=Treatment)) + 
    facet_wrap(~Species) 

enter image description here

+0

方面是一個很好的選擇,但4個盒子並不完全位於同一個(子)情節中。 –

1

可以定義具有4級或者在您的數據,或者在飛行,我已經如下圖所示的新變量。有了這個,你會得到4箱圖,按照你的要求着色和分組。無論您需要以某種方式區分數據,無論是在軸標籤上還是在圖例中。

ggplot(data=data)+geom_boxplot(aes(y= value, x= Treatment, fill=Treatment, group=paste(Species, Treatment)) 

enter image description here

+0

這是一個相當優秀的解決方案,但它只適用於x軸呈現分組因素之一的情況。當涉及到geom_line或goem_smooth時,x和y都表示值而不是分組因子,是否有解決方案? –

+0

我更新了使用分組的答案。我認爲這也適用於geom_line和geom_smooth –

+0

看起來我們認爲一樣,LOL。非常感謝。 –

1

結合Ĵ哈特和巴蒂斯特,ggplot(data=data)+geom_boxplot(aes(y= value, x= Treatment, fill=Treatment, group= paste(Treatment, Species)))作品完美的解決方案。