用R做heatmap示例:NBA联盟50位顶级球员的指标表现

虽然 heatmap 只是 R 中一个很普通的图形函数,但这个例子使用了2008-2009赛季 NBA 50个顶级球员数据做了一个极佳的演示,效果非常不错。对 R 大致了解的童鞋可以直接在 R console 上敲

?heatmap

直接查看帮助即可。

没有接触过 R 的童鞋继续围观,下面会仔细介绍如何使用 R 实现 NBA 50位顶级球员指标表现热图:

关于 heatmap,中文一般翻译为“热图”,其统计意义wiki上解释的很清楚:

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位顶级球员的指标表现相关推荐

  1. 用python分析NBA联盟球员信息,才知道这些秘密!

    作者: 锋小刀 微信搜索[Python与Excel之交]关注我的公众号查看更多内容 前言 NBA由北美三十支队伍组成的男子职业篮球联盟,汇集了世界上最顶级的球员,是美国四大职业体育联盟之一. 本文爬取 ...

  2. 菜鸟教程-C语言经典100示例(后50)

    注:接上篇(菜鸟教程-C语言经典100示例(前50)) 51,学习使用按位与 &. 52,学习使用按位或 |. 53,学习使用按位异或 ^. 54,取一个整数a从右端开始的4-7位. 55,学 ...

  3. 菜鸟教程-C语言经典100示例(前50)

    这两天正在看基础的算法,在做的时候肯定不能避免的接触了菜鸟上的经典100例,但是使用的时候发现并不是那么的方便,因为它只是给了序号,如果查找某一问题的话很不方便,所以做了这篇博客,希望给自己和其他人带 ...

  4. R主成分分析PCA示例

    R主成分分析PCA示例 目录 R主成分分析PCA示例 主成分分析(Principal components analysis) 加载数据 计算主成分(Principal

  5. 《数据分析实战》--用R做交叉列表

    <数据分析实战>–用R做交叉列表 本文参考的是<数据分析实战>第四章. 背景:针对某公司的产品,发现当月的用户使用量减少了很多,但是和上月相比,本月的商业宣传和月度活动并无大的 ...

  6. php转行当保安,一个保安转行做头条号年入50万,他是怎么做到的?

    原标题:一个保安转行做头条号年入50万,他是怎么做到的? 作者:边瑾 来源:今日榜 提到欢子,很多人会直接想到歌手欢子,那个因<心痛2009>火遍全国各地的男艺人. 但在头条号短视频领域, ...

  7. 使用R做方差分析实现多重比较可视化结果

    说明:本文章中为作者R学习笔记,资料及操作流程均来源网络,侵权删! 本文源代码"使用R做方差分析源代码.R" 1. 方差分析假定:正态性(否则建立广义线性模型),独立性(否则建立混 ...

  8. 用R做中文LDA主题模型可视化分析

    LDA主题模型在2002年被David M. Blei.Andrew Y. Ng(是的,就是吴恩达老师)和Michael I. Jordan三位第一次提出,近几年随着社会化媒体的兴起,文本数据成为越来 ...

  9. 想做国外CPA广告联盟,准备好接受洗礼吧

    CPA联盟国外又称广告联盟国外也叫LEAD,是指导和带领他人完成一定任务的过程,如注册.邮件提交.邮件确认等.其本质是引导访客通过自己的推广链接完成广告主下达的任务,从而获得广告主支付的佣金. 目前, ...

最新文章

  1. 西瓜创客+Leangoo敏捷实践企业案例分享
  2. Mac上运行第一个Hadoop实例
  3. Angular 2+ 监听路由变化动态设置页面标题
  4. (转)使用异步 I/O 大大提高应用程序的性能
  5. 一些关于bootstrap,bagging,Adaboost,random forest, gradient boost的基本理解
  6. 处理数字_8_计算不含最大/小值的均值
  7. Flume的Avro Sink和Avro Source研究之一: Avro Source
  8. 【转载】ACM中矩阵乘法的应用
  9. C# 篇基础知识10——多线程
  10. 我只是bug的搬运工之idea的Cannot run program git.exe: CreateProcess error=2
  11. ORACLE创建表空间、用户语句
  12. WinAPI 字符及字符串函数(13): lstrcmp、lstrcmpi - 对比串
  13. c语言自学手册百度云,C语言新手入门自学零基础通俗易懂教程百度云
  14. ANC主动降噪理论及Matlab代码实现
  15. thrift0.8.0支持win7的方法
  16. linux-ext4格式文件误删除恢复
  17. 新云人才招聘系统抖音小程序申请配置教程
  18. 计算机启用远程桌面连接失败,解决办法:如何处理win10远程桌面连接失败?
  19. 1062 最简分数 python
  20. 什么叫单模光纤_什么是OS1,OS2的单模光纤

热门文章

  1. windows tasklist 查看应用、进程
  2. Spring的EL表达式
  3. python累积和_python – 如何维持累积总和?
  4. 质数环问题c语言,素数环问题
  5. c语言两种排序方法的组合,排列和组合算法的实现方法_C语言经典案例
  6. php定义一个名为Vehicles,php的扩展和嵌入--c++类的扩展开发
  7. 微型计算机,单片机和单板机是,9、微型计算机、单片机和单板机是()
  8. PyTorch教程(八):常见激活函数与Loss的梯度
  9. sed行首行尾添加字符
  10. SparkSQL 控制文件输出的大小