用R做heatmap示例:NBA联盟50位顶级球员的指标表现
雖然 heatmap 只是 R 中一個很普通的圖形函數,但這個例子使用了2008-2009賽季 NBA 50個頂級球員數據做了一個極佳的演示,效果非常不錯。對 R 大致了解的童鞋可以直接在 R console 上敲
?heatmap
直接查看幫助即可。
沒有接觸過 R 的童鞋繼續圍觀,下面會仔細介紹如何使用 R 實現 NBA 50位頂級球員指標表現熱圖:
關于 heatmap,中文一般翻譯為“熱圖”,其統計意義wiki上解釋的很清楚:
A?heat map?is a graphical representation of data where the values taken by a?variablein a two-dimensional map are represented as colors.Heat maps originated in 2D displays of the values in a data matrix. Larger values were represented by small dark gray or black squares (pixels) and smaller values by lighter squares.
下面這個圖即是Flowingdata用一些?R?函數對2008-2009 賽季NBA 50名頂級球員指標做的一個熱圖(點擊參看大圖):
?
先解釋一下數據:
這里共列舉了50位球員,估計愛好籃球的童鞋對上圖右邊的每個名字都會耳熟能詳。這些球員每個人會有19個指標,包括打了幾場球(G)、上場幾分鐘(MIN)、得分(PTS)……這樣就行成了一個50行×19列的矩陣。但問題是,數據有些多,需要使用一種比較好的辦法來展示,So it comes, heatmap!
簡單的說明:
比如從上面的熱圖上觀察得分前3名(Wade、James、Bryant)PTS、FGM、FGA比較高,但Bryant的FTM、FTA和前兩者就差一些;Wade在這三人中STL是佼佼者;而James的DRB和TRB又比其他兩人好一些……
姚明的3PP(3 Points Percentage)這條數據很有意思,非常出色!仔細查了一下這個數值,居然是100%。仔細回想一下,似乎那個賽季姚明好像投過一個3分,并且中了,然后再也沒有3p。這樣本可真夠小的!
最后是如何做這個熱圖(做了些許修改):
#讀取數據就這么簡單: nba =read.csv("http://datasets.flowingdata.com/ppg2008.csv", sep=",")#Step 2. Sort data #按照球員得分,將球員從小到大排序: nba <- nba[order(nba$PTS),]#Step 3. Prepare data #把行號換成行名(球員名稱): row.names(nba) <- nba$Name #去掉第一列行號: nba <- nba[,2:20] # or nba <- nba[,-1] #Step 4. Prepare data, again #把 data frame 轉化為我們需要的矩陣格式: nba_matrix <- data.matrix(nba) #Step 5. Make a heatmap # R 的默認還會在圖的左邊和上邊繪制 dendrogram,使用Rowv=NA, Colv=NA去掉 heatmap(nba_matrix, Rowv=NA, Colv=NA, col=cm.colors(256), revC=FALSE, scale='column') #這樣就得到了上面的那張熱圖。 #Step 6. Color selection #或者想把熱圖中的顏色換一下: heatmap(nba_matrix, Rowv=NA, Colv=NA, col=heat.colors(256), revC=FALSE, scale="column", margins=c(5,10))?
?
延伸閱讀:
來自于kerimcan和krees這些人的討論:
http://sekhon.polisci.berkeley.edu/stats/html/heatmap.html
http://enotacoes.wordpress.com/2007/11/16/easy-guide-to-drawing-heat-maps-to-pdf-with-r-with-color-key/
補充:
David Smith 的?博客。
posted on 2012-03-15 22:58 wentingtu 閱讀(...) 評論(...) 編輯 收藏轉載于:https://www.cnblogs.com/wentingtu/archive/2012/03/15/2399458.html
總結
以上是生活随笔為你收集整理的用R做heatmap示例:NBA联盟50位顶级球员的指标表现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第九章 转移指令的原理
- 下一篇: wordpress--SEO们的福音