1. 程式人生 > >R語言繪製熱圖Heatmap

R語言繪製熱圖Heatmap

熱圖,適合二維資料表的視覺化,數值用顏色顯示。

細活在於調顏色,給人感性的、辨識度高的認識。

nba <- read.csv("d:/ppg2015.csv", sep=",")

nba <- nba[order(nba$PTS),]; #按場均得分排名
row.names(nba) <- nba$PLAYER;#行名為球星名
nba <- nba[,-c(1:4,8,10,12)]

nba_matrix <- data.matrix(nba)

nba_heatmap <- heatmap(nba_matrix, Rowv=NA, Colv=NA, col = topo.colors(16),scale="column", margins=c(5,10))

Heatmap顏色的設定還是很關鍵的,直接體現你這幅圖的效果了。
R中顏色調色盤很多:
(1)簡單的
heat.colors(n, alpha = 1)
terrain.colors(n, alpha = 1)
topo.colors(n, alpha = 1)
cm.colors(n, alpha = 1)
比如,col=cm.colors(256))  #這裡的顏色設定為n=256種,如果為2,做出的圖就有兩種顏色,不是你顏色設定越多越好,根據自己的需要而定(即合理的設定n)。
(2)複雜的
rainbow(n, s = 1, v = 1, start = 0, end = max(1,n - 1)/n, alpha = 1)

其中n代表顏色的種類,Start是起始的顏色,end是結束的顏色。可以設定為red=0, yellow=1/6, green=2/6, cyan=3/6, blue=4/6 and magenta=5/6.

熱圖的優缺點:

優點:
1. 與實景結合,資料表達更直觀
2. 用形狀和色彩傳遞資訊,更易理解
人對事物的認知是感性的基於某種基模的,人對形、色、聲、味、溫度、壓力…等可直接感知內容的理解要比數字容易的多。
熱圖之所以為“熱圖”是用人們熟知的火焰色彩傳達溫度感,藉助形、色和溫度三種基模傳遞原本難以理解的數量資訊,非常之給力。
3. 柔化視覺效果更好,對非精確資訊表達更合理
攝影愛好者一定知道柔光攝影技巧,照出來的照片更漂亮。

柔化之所以更舒服是因為較為平滑的色彩過渡讓人感覺更柔和。
有時候我們更希望得到資料的平均值或近似值,而不是精確值,比如我們點選網頁上的內容時並不是精確到某一畫素,而是一個區域。因此模糊處理後可以更合理的解釋使用者比較喜歡點選的區域。

缺點:
1. 柔化效果,對精確資訊表達不準確
2. 色彩傳遞感性化資訊,不容易分辨具體值

熱圖的應用場景: 
(1)足球比賽中,可以用來呈現隊員在場上的活動熱圖;
(2)超市或商店裡呈現顧客的移動和駐足的熱圖,用來優化商品和貨架佈局;
(3)統計房屋租金價格,與地圖結合看租房熱度;
(4)統計程式中的字幕頻度,用鍵盤和熱圖呈現,來看不同程式語言的常用字元: