2013-10-04 40 views
1

我有一系列數據表明多久以前某種類型的DNA元件在基因組中有活性。它可能是這個樣子:在堆積密度圖(ggplot2)中轉換每個因子的高度

data.df <- data.frame(name=c("type1", "type1", "type1", "type2", "type2", "type2"), 
         active=c(9,11,10,21,21,18)) 

因此,有三個「TYPE1」主動約10年前的元素和三個類型2的元素活躍的20年前。

我使用GGPLOT2得到當每個元素活躍的分佈產生的堆疊密度圖,這樣的事情:

ggplot(data.df, aes(x=active)) + geom_density(position="stack", aes(fill=name)) 

Stacked sample plot

我有信息,這些相對丰度元素,我想將每個元素密度的高度乘以該數字。這最終會給我提供這些元素在基因組中的實際活動丰度,而不僅僅是他們活動的分佈。

所以我的問題歸結爲:如何根據組轉換/乘以每個元素類型密度的高度的某個因素?例如,如果我在基因組中有1000個第一類元素並且只有3個第二類元素,堆積密度圖將由類型1支配,並且您很難看到與類型2相關的曲線。

我希望這是有道理的。提前致謝!

回答

1

我不知道我是否正確理解了你的問題,但這是你想要的嗎?

ggplot(data.df) 
+geom_density(aes(x=active,y=..scaled..,fill=name),position="stack") 

ggplot2stat_density下幫助說scaled使‘密度估計,縮放到最大的1’。

另外,您還可以添加一個重列(例如,wght)到您的data.frame,使用weight論點geom_density和忽略警告消息

data.df=data.frame(name=c("type1","type1","type1","type1","type1","type1","type2", "type2","type2"),active=c(1.1,1,1,1,1,1,17.1,17,17),stringsAsFactors =FALSE) 
data.df=within(data.df,wght<-c(rep(1/6,6),rep(4/9,3))) 

ggplot(data.df)+ 
geom_density(aes(x=active,y=(..density..),fill=name,weight=wght),position="stack") 

不過,我不知道究竟如何geom_density手柄權重不總和爲1.

+0

權重正是我所期待的。 ..scaled ..縮放所有曲線的最大高度爲1,這會使數量上人爲地誇大更廣泛的分佈/活動範圍。謝謝! –