簡體   English   中英

R:為什么熱圖在相同數量的行中顯示白色?

[英]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")

在示例中,我們看到一行是白色的,它來自行數據(0.3,0.3,0.3)

非常感謝您的幫助

顏色為白色,因為您的熱圖命令會在繪制熱圖之前縮放行。 因此,行c(0.3,0.3,0.3)變為零行,並且在此配色方案中,零用白色表示。

如果要為這些行使用其他顏色方案,則必須考慮是否確實要縮放行,或者使用breakscol參數為值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.

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