2016-04-28 42 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