2016-04-28 50 views
0

我對編碼非常陌生,遇到了一個問題,我無法在網上找到解決方案。R Studio:Overlay heatmap

我有兩個數據矩陣,我想合併成一個熱圖。矩陣在時間上包含細胞的紅色和綠色熒光強度。我希望heatmap的顏色反映熒光強度(白色或黑色,當兩者都低時,紅色時紅色高,綠色時綠色高時,黃色時,都低)。

從紅色和綠色之間的比例創建熱圖與我想要的類似,但沒有給出有關絕對熒光強度的任何信息。

我可以在Illustrator中創建兩個單獨的熱圖並覆蓋它們,但這1.不太優雅,2.不允許我將這些單元聚合在一起,3.當在Illustrator中使顏色變得透明時,紅色和綠色變成棕色而不是黃色,兩種顏色都很微弱。

我現在試圖總結一下我的兩個值。據我所知,這隻能通過創建一個RGB值來實現。但是現在我已經獲得了每個時間點的RGB值,所以我無法將它們放到一個圖中。

代碼:

繪製比在熱圖:

heatmap.2(ratio_narm, 
     trace="none", 
     col = col, 
     breaks = breaks, 
     dendrogram='none', 
     Rowv="NA", 
    ) 

與(熔化)RGB數據ggplot繪製:

ggplot(data=RGB, aes(x=RGB$Timepoint, y=RGB$`Track ID`, fill=RGB$`RGB value`)) 

回答

0

你可以按照這個方法。它會在兩個矩陣中找到低值或高值並設置預定義值。

# data 
set.seed(12385) 
m1 <- matrix(runif(100),10,10) 
m2 <- matrix(runif(100),10,10) 
# thresholds 
low <- 0.2 
high <- 0.8 
# matrix with values 0 (both are low), 0.5 (both are average), 1 (both are high) 
m3 <- matrix(rep(0.5,100),10,10) 
# set the groups by filtering 
m3[ m1 < low & m2 < low ] <- 0 
m3[ m1 > high & m2 > high ] <- 1 
# low in m1, not considering m2 
m3[ m1 < low ] <- 0.75 
# or low in m1, but normal in m2 
m3[ m1 < low & (m2 > low & m2 < high) ] <- 0.75 
# ... you can define more conditions as you like 

# plot the heatmap 
heatmap.2(m3, 
      scale="none",trace="none", 
      col = c("black","grey","red","yellow")) 
+0

感謝您的回覆Jimbou!如果我從你的答案中正確理解,矩陣中的值將改變爲表示兩個矩陣高度的其他值,並使用閾值。因爲據我所能判斷,這樣的價值將被分類。但是,我認爲這樣我就會從我的數據中散失大量信息。我想看看圖中反映的兩個矩陣的熒光強度。有關如何在沒有分類的情況下實現它的任何建議? – Lvanrijnberk

+0

是的,您會通過這種方式丟失數據中的大量信息。在www.biostars.org上發佈這個問題也許是有幫助的,包括微芯片類型的解釋,你想要執行的分析的細節(RNA表達,SNP,...)等等。有許多工具可用於比較微芯片的強度值。 – Jimbou