【R语言】pheatmap包绘制热图教程

本篇文章介绍基于R语言的热图(heatmap)可视化教程,该教程为个人笔记,不足之处欢迎大家批评指正!

pheatmap,全称Pretty Heatmaps,直译“完美的热图”,是一款非常优秀的热图绘制R包。在生信分析中,我们常常需要计算一个样本的几次实验结果或者不同样本实验结果的相关系数(样本间相关系数)以判断几个数据集之间相关的程度。

样图

R语言的实现

#清除当前环境中的变量
rm(list=ls())
#安装pheatmap包
#install.packages("pheatmap")
#调用pheatmap包
library(pheatmap)
运行代码
#随机生成数据
#(set.seed()括号里面的参数可以是任意数字,代表设置的第几号种子而已,不会参与运算,是个标记)
set.seed(1)
#随机生成30×20的矩阵
test = matrix(rnorm(600), 30, 20)
#定义列名为sp1-sp30
colnames(test) = paste("sp", 1:20, sep = "")
#定义行名为ge1-ge30
rownames(test) = paste("ge", 1:30, sep = "")
#查看数据前六行
head(test)
示例数据
#pheatmap包pheatmap()函数的默认图
# 默认绘图
pheatmap(test)
图1
##scale = "row"对行进行均一化,clustering_method设定不同聚类方法.
##默认为"complete",可以设定为'ward', 'ward.D', 'ward.D2', 'single', 
##'complete', 'average', 'mcquitty', 'median' or 'centroid'
pheatmap(test,
         scale = "row", 
         clustering_method = "average")
图2
#参数设定行聚类距离方法为Pearson,默认为欧氏距离"euclidean"
pheatmap(test, 
         scale = "row", 
         clustering_distance_rows = "correlation")
图3
#color参数自定义颜色(红白蓝)
pheatmap(test, 
         cluster_row = FALSE,
         cluster_col = TRUE,
         color = colorRampPalette(c("red","white","blue"))(100))
图4
pheatmap(test, 
         treeheight_row = 20, #设置行聚类树的高度
         treeheight_col = 30, #设置列聚类树的高度
         color = colorRampPalette(c("red","white","blue"))(100))
图5
         cellheight = 10, #格子高度
         fontsize = 10,#设置字体大小
         main = "Example heatmap",#添加主标题
         color = colorRampPalette(c("red","white","blue"))(100))
图6
pheatmap(test, 
         display_numbers = TRUE, #设定在每个热图格子中显示相应的数值
         number_format = "%.1e", #设定数值的显示格式
         number_color = "blue", #设置热图格子中数值的颜色
         color = colorRampPalette(c("red","white","blue"))(100))
图7
pheatmap(test, 
         display_numbers = matrix(ifelse(test > 2, "*", "."), nrow(test)),#数值>2时显示星号, ≤2时显示·
         color = colorRampPalette(c("red","white","blue"))(100)
图8

常用参数介绍

基础设置
main 图的名字file 要保存图的名字color 表示颜色,赋值渐变颜色调色板colorRampPalette属性,选择“绿,黑,红”渐
变,分为100个等级,,例:color = colorRampPalette(c(“navy”, “white”, “firebrick3”))(100)
sclae 表示值均一化的方向,或者按照行或列,或者没有,值可以是"row", “column” 或者"none"
margins 表示页边空白的大小
fointsize 表示每一行的字体大小

聚类相关设置
cluster_cols 表示进行列的聚类,值可以是FALSE或TRUE
cluster_row 同上,是否进行行的聚类
treeheight_row 设置row方向的聚类树高
treeheight_col 设置col方向的聚类树高
clustering_distance_row 表示行距离度量的方法
clustering_distance_cols 同上,表示列距离度量的方法
clustering_method 表示聚类方法,值可以是hclust的任何一种,如"ward.D",“single”, “complete”(默认), “average”, “mcquitty”, “median”, “centroid”, “ward.D2”

legend设置
legend TRUE或者FALSE,表示是否显示图例
legend_breaks 设置图例的断点,格式:vector
legend_labels legend_breaks对应的标签 例:legend_breaks = -1:4, legend_labels = c(“0”,“1e-4”, “1e-3”, “1e-2”, “1e-1”, “1”)

单元格设置
border_color 表示热图上单元格边框的颜色,如果不绘制边框,则使用NA
cellheight 表示每个单元格的高度
cellwidth 表示每个单元格的宽度
单元格中的数值显示:
display_numbers 表示是否将数值显示在热图的格子中,如果这是一个矩阵(与原始矩阵具有相同的尺寸),则显示矩阵的内容而不是原始值。
fontsize 表示热图中字体显示的大小
number_format 设置显示数值的格式,较常用的有"%.2f"(保留小数点后两位),"%.1e"(科学计数法显示,保留小数点后一位)
number_color 设置显示内容的颜色

热图分割设置
cutree_rows 基于层次聚类(使用cutree)划分行的簇数(如果未聚集行,则忽略参数)
cutree_cols 基于层次聚类(使用cutree)划分列的簇数

annotation相关设置
annotation_row 行的分组信息,需要使用相应的行名称来匹配数据和注释中的行,注意之后颜色设置会考虑离散值还是连续值,格式要求为数据框
annotation_col 同上,列的分组信息
annotation_colors 用于手动指定annotation_row和annotation_col track颜色的列表。
annotation_names_row boolean值,显示是否应绘制行注释track的名称。
annotation_names_col 同上,显示是否应绘制列注释track的名称。

可以参考:https://www.datanovia.com/en/lessons/heatmap-in-r-static-and-interactive-visualization/
参考文献:https://www.jianshu.com/p/1c55ea64ff3fhttps://cloud.tencent.com/developer/article/1765623https://blog.csdn.net/lalaxumelala/article/details/86022722

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,607评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,047评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,496评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,405评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,400评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,479评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,883评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,535评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,743评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,544评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,612评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,309评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,881评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,891评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,136评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,783评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,316评论 2 342

推荐阅读更多精彩内容