2016-05-05 3 views
0

У меня есть следующий dataframe:Plot сгруппированных значения в dataframe в R

  stat      mTADs     DE_genes 
    5267 -5.452819 chr2:167337500-167447500 chr2:167318145-167341673:+ 
    5268 4.114012 chr6:41532500-41642500 chr6:41555481-41570508:+ 
    5269 9.812369 chr10:18157500-18262500 chr10:18259929-18265882:- 
    5270 3.371969 chr17:40957500-41062500 chr17:41060000-41071996:- 
    5271 4.576930 chr17:40957500-41062500 chr17:41012431-41017507:- 
    5272 2.952151 chr11:72251250-72352500 chr11:72254857-72265270:+ 
    5273 -3.349795 chr1:174307500-174407500 chr1:174405489-174408706:+ 
    5274 -2.685897 chr13:100777500-100877500 chr13:100787949-100874025:- 
    5275 2.865269 chr13:100777500-100877500 chr13:100718488-100785594:- 
    5276 6.436959 chr4:150417500-150517500 chr4:150377761-150418774:- 
    5277 2.622196  chr7:6072500-6162500  chr7:6123828-6142951:+ 
    5278 -5.605531 chr11:48597500-48682500 chr11:48675470-48685185:- 
    5279 3.554733 chr11:48597500-48682500 chr11:48639642-48665711:+ 
    5280 4.399655 chr11:48597500-48682500 chr11:48638848-48640157:- 

Как вы видите, некоторые DE_genes попадают в тот же mTAD. Я хотел бы построить для всех DE_genes свои значения stat и сгруппировать их mTAD. Я думал о том, чтобы делать это как горизонтальный штрих-код, имеющий на оси оси гены, а по оси x - значения stat и группировать их по TAD, но сначала я не знаю, как это сделать, а во-вторых, я думал, что карта тепла может быть лучше вариант. Есть ли способ сделать это в R? В целом у меня есть 1700 mTAD, и я хотел бы посмотреть, есть ли какие-либо шаблоны в данных.

Большое спасибо, Димитрис

+0

не Схемы Зоны активности полезны для данных, которые вы представляете здесь. Радиальные карты почти всегда имеют два размера, так что они создают сетку цвета. Ваша переменная 'stat' является одним измерением для тепловой карты. Каково ваше второе измерение, mTAD? Это может быть очень сложная тепловая карта для интерпретации. – David

ответ

0

Вы могли бы рассмотреть отсортированный dotchart вместо BarChart.

> thing 
    ID  stat      mTADs     DE_genes 
1 5267 -5.452819 chr2:167337500-167447500 chr2:167318145-167341673:+ 
2 5268 4.114012 chr6:41532500-41642500 chr6:41555481-41570508:+ 
3 5269 9.812369 chr10:18157500-18262500 chr10:18259929-18265882:- 
4 5270 3.371969 chr17:40957500-41062500 chr17:41060000-41071996:- 
5 5271 4.576930 chr17:40957500-41062500 chr17:41012431-41017507:- 
6 5272 2.952151 chr11:72251250-72352500 chr11:72254857-72265270:+ 
7 5273 -3.349795 chr1:174307500-174407500 chr1:174405489-174408706:+ 
8 5274 -2.685897 chr13:100777500-100877500 chr13:100787949-100874025:- 
9 5275 2.865269 chr13:100777500-100877500 chr13:100718488-100785594:- 
10 5276 6.436959 chr4:150417500-150517500 chr4:150377761-150418774:- 
11 5277 2.622196  chr7:6072500-6162500  chr7:6123828-6142951:+ 
12 5278 -5.605531 chr11:48597500-48682500 chr11:48675470-48685185:- 
13 5279 3.554733 chr11:48597500-48682500 chr11:48639642-48665711:+ 
14 5280 4.399655 chr11:48597500-48682500 chr11:48638848-48640157:- 

Сначала мы возьмем медианы mTADs.

medians.of.stat.by.mTADs<-aggregate(stat~mTADs,data=thing,FUN=median) 
names(medians.of.stat.by.mTADs)[2]<-"median stat for mTAD" 

Теперь слейте эти медианы с исходным кадром данных и создать фактор при заказе на отсортированных stat значений.

thing<-merge(thing,medians.of.stat.by.mTADs,all.x = T,by="mTADs") 
thing$mTADs.reordered <-factor(thing$mTADs, levels=thing[order(thing$`median stat for mTAD`), "mTADs"]) 

Это вызовет предупреждение из-за дублированных уровней, но, похоже, это сработает.

> thing 
         mTADs ID  stat     DE_genes median stat for mTAD   mTADs.reordered 
1 chr1:174307500-174407500 5273 -3.349795 chr1:174405489-174408706:+   -3.349795 chr1:174307500-174407500 
2 chr10:18157500-18262500 5269 9.812369 chr10:18259929-18265882:-    9.812369 chr10:18157500-18262500 
3 chr11:48597500-48682500 5278 -5.605531 chr11:48675470-48685185:-    3.554733 chr11:48597500-48682500 
4 chr11:48597500-48682500 5279 3.554733 chr11:48639642-48665711:+    3.554733 chr11:48597500-48682500 
5 chr11:48597500-48682500 5280 4.399655 chr11:48638848-48640157:-    3.554733 chr11:48597500-48682500 
6 chr11:72251250-72352500 5272 2.952151 chr11:72254857-72265270:+    2.952151 chr11:72251250-72352500 
7 chr13:100777500-100877500 5274 -2.685897 chr13:100787949-100874025:-    0.089686 chr13:100777500-100877500 
8 chr13:100777500-100877500 5275 2.865269 chr13:100718488-100785594:-    0.089686 chr13:100777500-100877500 
9 chr17:40957500-41062500 5270 3.371969 chr17:41060000-41071996:-    3.974449 chr17:40957500-41062500 
10 chr17:40957500-41062500 5271 4.576930 chr17:41012431-41017507:-    3.974449 chr17:40957500-41062500 
11 chr2:167337500-167447500 5267 -5.452819 chr2:167318145-167341673:+   -5.452819 chr2:167337500-167447500 
12 chr4:150417500-150517500 5276 6.436959 chr4:150377761-150418774:-    6.436959 chr4:150417500-150517500 
13 chr6:41532500-41642500 5268 4.114012 chr6:41555481-41570508:+    4.114012 chr6:41532500-41642500 
14  chr7:6072500-6162500 5277 2.622196  chr7:6123828-6142951:+    2.622196  chr7:6072500-6162500 

Теперь сделайте простую точечную диаграмму.

ggplot() + geom_point(data=thing, aes(x=stat,y=mTADs.reordered), shape=20, cex=3.3) 

sorted dotchart by median of mTAD

+0

Большое спасибо Дэвиду за то, что вы предлагаете этот способ визуализации. Это сработало! – user2931662

Смежные вопросы