R语言绘制heatmap热图

本文介绍了如何使用R语言绘制heatmap热图,以2008-2009赛季NBA50位顶级球员的数据为例,展示了如何加载数据、排序、转换格式并选择颜色,最终创建出揭示球员指标表现的热图。

介绍如何使用 R 绘制 heatmap 的文章。

今天无意间在Flowingdata看到一篇关于如何使用 R 来做 heatmap 的文章(请移步到这里)。虽然 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 variable in 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。这样本可真够小的!

最后是如何做这个热图(做了些许修改):

Step 0. Download R

R 官网:http://www.r-project.org,它是免费的。官网上面提供了Windows,Mac,Linux版本(或源代码)的R程序。

Step 1. Load the data

R 可以支持网络路径,使用读取csv文件的函数read.csv。

读取数据就这么简单:

 

nba<- read.csv("http://datasets.flowingdata.com/ppg2008.csv", sep=",") 

 

Step 2. Sort data

按照球员得分,将球员从小到大排序:

 

nba <- nba[order(nba$PTS),]

 


当然也可以选择MIN,BLK,STL之类指标

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))
 
Bioinformatics and Computational Biology Solutions Using R and Bioconductor 第10章的
例子:
Heatmaps, or false color ima
### 使用 R 语言绘制 (Heatmap) #### pheatmap 包简介 `pheatmap` 是一个功能强大的 R 包,用于创建高质量的。该包允许用户对数据矩阵进行聚类分析并以视觉上吸引人的方式显示结果[^1]。 #### 安装与加载 `pheatmap` 为了使用此包,需先安装它: ```r install.packages("pheatmap") ``` 接着,在每次会话开始时加载这个软件包: ```r library(pheatmap) ``` #### 数据准备 假设有一个名为 `data_matrix` 的表达量矩阵作为输入文件,其中每一列代表样本而每行则对应于同的特征(比如基因)。这里给出一个简单的例子来模拟这样的数据集: ```r set.seed(123) # 设置随机种子以便重复实验 data_matrix <- matrix(rnorm(100), nrow=10, dimnames=list(paste0('Gene', 1:10), paste0('Sample', 1:10))) head(data_matrix[, 1:5]) ``` 这段代码生成了一个包含 10 行(基因)和 10 列(样本)的数据框,并填充了正态分布产生的数值。前五行被打印出来供查看[^4]。 #### 创建基础 有了合适格式化的数据之后就可以调用 `pheatmap()` 函数来构建最简单形式的了: ```r pheatmap(data_matrix) ``` 这将会打开一个新的窗口显示出带有默认参数设定下的彩色方格阵列——即所谓的“”。每个单元格的颜色深浅反映了相应位置处原始值大小的关系;通常情况下,较亮色调意味着较高水平的测量指标,反之亦然。 #### 自定义属性 除了上述最基本的操作外,还可以进一步调整像的各种特性,如颜色方案、边距宽度以及是否启用树状等。下面是一些常用的可选参数及其说明: - **color**: 指定渐变色板,默认采用的是从蓝色到白色再到红色的变化序列; - **scale**: 对数转换方式 ("none", "row", 或者 "column") ,有助于标准化同范围内的变量间比较; - **cluster_rows/cols**: 布尔型标志位决定要要基于距离度量执行层次聚类运算; - **show_rownames/show_colnames**: 控制标签文字可见性的逻辑开关。 举例来说,如果想要改变配色风格并且仅沿行方向实施分层分类的话,则应这样写命令: ```r pheatmap( data_matrix, color=colorRampPalette(c("navy", "white", "firebrick"))(50), scale="row", cluster_cols=F, show_rownames=T, show_colnames=T ) ``` 通过这种方式能够得到一张经过精心修饰后的,从而更好地服务于特定应用场景的需求[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值