2016-05-05 9 views
0

Ich habe folgende Datenrahmen:Plot Werte eines Datenrahmens in R gruppiert

  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:- 

Wie Sie einige DE_genes sehen im gleichen MTAD fallen. Ich möchte für alle DE_genes ihre Stat-Werte plotten und sie mit mTAD gruppieren. Ich dachte daran, dies als einen horizontalen Barplot zu machen, der auf der Yaxis die Gene hat, und auf der X-Achse die Stat-Werte und gruppiere sie nach TAD, aber zuerst weiß ich nicht, wie ich es machen soll und zweitens dachte ich, dass eine Heatmap besser sein könnte Möglichkeit. Gibt es eine Möglichkeit, das in R zu tun? Insgesamt habe ich 1700 mTADs und ich würde gerne sehen, ob es irgendwelche Muster in den Daten gibt.

Vielen Dank, Dimitris

+0

mc_ui_heatmap sind für die Daten nicht sinnvoll, die Sie hier präsentieren. Heatmaps haben fast immer zwei Dimensionen, so dass sie ein Farbraster bilden. Ihre 'stat'-Variable ist eine Dimension für eine Heatmap. Was ist deine zweite Dimension, mTAD? Das könnte eine sehr schwierige zu interpretierende Heatmap sein. – David

Antwort

0

Sie könnten eine sortierte dotchart anstelle eines barchart betrachten.

> 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:- 

Zuerst werden wir Mediane von mTADs nehmen.

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

Sie jetzt Mediane mit dem ursprünglichen Datenrahmen verschmelzen und einen Faktor von der Bestellung auf den sortierten stat Werte erstellen.

Dies wird eine Warnung wegen doppelte Ebenen werfen, aber es scheint zu funktionieren.

> 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 

Jetzt machen Sie ein einfaches dotchart.

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

sorted dotchart by median of mTAD

+0

Vielen Dank David für diese Art der Visualisierung. Es funktionierte! – user2931662