簡體   English   中英

如何在R中使用Pheatmap將顏色比例固定到每一行的最小值/最大值

[英]How to anchor color scale to the min / max for each row using pheatmap in R

我目前正在R中使用pheatmap從單個單元格數據創建基因表達的熱圖。

我目前遇到的問題是,我似乎無法復制其他熱圖生成器(例如Morpheus)中使用的相對色階: https : //software.broadinstitute.org/morpheus/

詳細說來,在Morpheus中,色標可以固定到每一行的最小和最大表達值。 例如,假設色階很簡單,例如c('dark_blue', 'blue', 'bright_blue', 'white', 'bright_red', 'red', 'dark_red') ,我提供了一個看起來像t(data.frame(row1=c(0, 1, 2, 3, 4, 5, 6), row2=c(10, 11, 12, 13, 14, 15, 16))),的矩陣t(data.frame(row1=c(0, 1, 2, 3, 4, 5, 6), row2=c(10, 11, 12, 13, 14, 15, 16))), Morpheus將顏色0暗第一行顯示藍色和6個深紅色,第二行顯示10個為深藍色,而16個顯示為深紅色。 顏色條然后代表每行的相對最小值和最大值。

請注意,這與簡單縮放數據不同,這是我在phoemap中所做的。 問題是,如果我有t(data.frame(row1=c(1, 2, 3, 4, 5, 6), row2=c(10, 0, 0, 0, 0, 0))) ,則即使縮放數據,也不允許將6(縮放后為〜1.34)塗成深紅色,因為對於整個熱圖,色標固定為最小值(縮放后為〜-0.41)和最大值(縮放后為〜2.04) 。

我毫不懷疑有一個簡單的方法可以實現這一目標,但是我無法通過瀏覽基本文檔來弄清楚。 我還了解到,以這種方式顯示熱圖不允許對基因進行任何比較,但這對我的用途並不是特別重要。

您可以像這樣按行縮放數據:

mat <- t(data.frame(row1=c(0, 1, 2, 3, 4, 5, 6), row2=c(10, 11, 12, 13, 14, 15, 16)))
mat2 <- t(apply(mat, 1, scale))

然后pheatmap具有參數cluster_cols ,您可以將其設置為FALSE 將所有這些放在一起將在最終的熱圖中使深藍色變為0和10

pheatmap(mat2, cluster_cols = F)

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM