2014-07-25 30 views
0

我已經生成了一個只有0和1的簡單測試矩陣(只有3x3矩陣)。我生成的確切矩陣是:問題 - 生成不正確的配色方案

vector <- c(1, 0, 0, 1, 1, 1, 0, 0, 1) 
matrix <- matrix(vector, nrow=3, ncol=3) 
heatmap(matrix, Rowv=NA, Colv=NA) 

生成的熱圖隨後出現白色,黃色,橙色和紅色塊。 0和1如何產生不同顏色的塊?它不應該只是說紅色和白色?還是黃色和白色?或類似的東西?

我在做什麼錯?

+1

只是所有描述提示,從不調用變量'矩陣'或任何其他函數的名稱 – wespiserA

回答

1

heatmap的默認行爲是按行按比例縮放值(以它們爲中心併除以標準偏差)。所以你不只是在你的例子中繪製0和1。這裏就是你真正密謀

m1 <- sweep(matrix, 1, rowMeans(matrix)) 
msd <- apply(m1, 1, sd) 
m2 <- sweep(m1, 1, msd, `/`) 
m2[,3:1] 

#   [,1]  [,2]  [,3] 
# [1,] -1.1547005 0.5773503 0.5773503 
# [2,] -0.5773503 1.1547005 -0.5773503 
# [3,] 0.5773503 0.5773503 -1.1547005 

如果你期待的只是兩種顏色,設置scale="none"

heatmap(matrix, Rowv=NA, Colv=NA, scale="none") 

這在?heatmap幫助頁面

enter image description here

0

這不是一個好問題。我建議在發佈之前閱讀?熱圖。

vector <- c(1, 0, 0, 1, 1, 1, 0, 0, 1) 
matrix <- matrix(vector, nrow=3, ncol=3) 
heatmap(matrix, Rowv=NA, Colv=NA, 
     col = c('red', 'blue') 
     ) 

如果你想要更多控制權的顏色,你可以通過一個函數來「關口」:爲以下證明您可以輕鬆地在指定的熱圖功能的色彩。

+0

但是,這會限制可用列或只有2個陰影。我使用的是0和1的測試矩陣,但是我想要生成的實際熱圖包括0-100範圍內的任何數字。我的問題不在於顏色選擇,而是爲什麼默認調色板似乎隨意放置與我的測試矩陣中的數字不相符的顏色。 0似乎用黃色和白色表示,而1用橙色和紅色表示。我的問題是爲什麼是這樣的情況 – user3412393

+0

熱圖如果兩個相同的值產生不同的顏色,讓我緊張地在任何實際數據上運行函數,這就是爲什麼我現在堅持一個更簡單的0和1的測試矩陣。 – user3412393