[英]R: Why Heatmap shows white color for rows with equal number?
在下面的示例中,包含3個cols和5行的矩陣。 當我創建熱圖時,任何具有相似數字的行(如下面的示例(0.3、0.3、0.3))都會在熱圖中顯示白色。 我的目的是將其更改為任何所需的顏色。 示例:這是一個示例:
A = matrix(c(0.0183207, 0.0000000, 0.1468750, 0.03, 0.03, 0.03,0.4544720,0.0000000,0.1395850,0.002,0,0,1.1,1,1),nrow=5,ncol=3,byrow = TRUE)
dimnames(A) = list(c("row1", "row2","row3","row4","row5"),c("col1", "col2", "col3"))
heatmap.2( A,col =redgreen, scale = "row", cexRow=0.3, cexCol=0.8, margins=c(6,6), trace="none")
非常感謝您的幫助
顏色為白色,因為您的熱圖命令會在繪制熱圖之前縮放行。 因此,行c(0.3,0.3,0.3)變為零行,並且在此配色方案中,零用白色表示。
如果要為這些行使用其他顏色方案,則必須考慮是否確實要縮放行,或者使用breaks
和col
參數為值0創建單獨的顏色。
縮放常數向量會發生什么? 您要告訴R除以0,得到NaN
。
scale(c(0.3, 0.3, 0.3))
當您告訴heatmap.2
按行縮放時,這就是發生的情況,但是您的其中一行沒有變化。 由於NaN
不是數字,因此將其繪制為白色。 如果您想將其改為黑色,那么我認為您應該預先手動縮放數據,並將NaN
替換為0。
scaled_A <- t(apply(A, MARGIN=1, FUN=scale))
scaled_A[is.nan(scaled_A)] <- 0
然后可以進行熱圖調用
heatmap.2( scaled_A,col =redgreen,
scale = "none",
cexRow=0.3, cexCol=0.8,
margins=c(6,6), trace="none",
dendrogram='none')
它是黑色的。 似乎可以按原樣切換順序,但是您可能可以找出解決方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.