运用 R语言 pheatmap 包绘制热图基础部分

运用 R语言 pheatmap 包绘制热图(基础部分)

注意内容:

  1. 对绘图文件格式的说明
  2. 对数据处理的说明,这里的数据是物种属水平相对丰度表
  3. 对pheatmap包基本绘图参数的修改,单元格的设置,聚类的设置,颜色的修改,单元格填充字体

示例数据存放在百度云,可自取
链接:https://pan.baidu.com/s/1O3rBFhG77YrclDixyncNrA
提取码:4bek

设置工作目录和加载所需包

 #设置自己的工作目录
## 注意使用反斜杠或者(\\)
setwd("C:/Users/shanpengloveforever/Desktop")
library(pheatmap) # 本次所使用的热图绘制包,如果没有安装包,记得提前安装好
library(vegan)  #vegan包待会可以用来标准化和中心化数据

导入数据和简单出图

这里用到的示例数据是一组属水平的相对丰富表


示例数据.png

接下来我们通过R函数将数据导入

data<-read.table("示例数据.txt",header=T,sep="\t",row.names=1)
View(data) #查看数据
data <- as.data.frame(data) #将数据转化为data.frame格式
导入R后查看数据.png

直接出图

pheatmap(data) #运用这个可以直接出图,但是不能直接使用,得对数据进行处理
热图原始.png

对数据进行标准化和中心化处理

这里对数据的进行 Z-scores 标准化和中性化处理,当然你可以用其他方法来对数据处理。

data.1 <- decostand(data,"standardize",MARGIN = 1)
#data.1 <- as.data.frame(scale(data))#第二种方法,但是这个默认是对列进行处理
View(data.1)
#c查看其标准差
apply(data.1,1,sd) 
处理后数据.png

我们对这个经过标准化和中心化的数据,直接绘制热图,看看其效果怎样。

pheatmap(data.1) #出图
标准化后热图1.png

其实这个热图已经可以使用了,对要求不高的同学,但是别忘记了属是要斜体的。
接下来我们对热图进行美化。

热图美化

对热图聚类的修改

clustering_method参数来设定不同聚类方法

# 使用clustering_method参数来设定不同聚类方法,默认为"complete",
#可以设定为'ward', 'ward.D', 'ward.D2', 'single', 'complete', 'average', 'mcquitty', 'median' or 'centroid'等
pheatmap(data.1, clustering_method = "mcquitty")
聚类修改热图.png

可以看到修改聚类方法,热图还是有一定差距的,可以根据自己的实际需求来选择合适的方法

clustering_distance_rows行聚类距离度量

# 行列聚类距离度量
# clustering_distance_rows = "correlation"参数设定行聚类距离方法为Pearson corralation,默认为欧氏距离"euclidean"
#clustering_distance_cols 表示列距离度量的方法
pheatmap(data.1,clustering_distance_rows = "correlation",
      clustering_distance_cols= "correlation" )
聚类距离.png

cluster_row = FALSE参数设定不对行进行聚类;cluster_cols = FALSE参数设定不对列进行聚类

pheatmap(data.1,
         cluster_row = FALSE,cluster_cols = FALSE) 
不聚类.png

treeheight_row 设置行的聚类树高,treeheight_col 设置列的聚类树高

# 可以选择一个合适的聚类高度
pheatmap(data.1,
         treeheight_row=100,treeheight_col=50) 
聚类高度.png

热图颜色修改

color参数来修改颜色,这里使用赋值渐变颜色调色板colorRampPalette

# 选择“紫,白,红”渐变,分为50个等级,可以选择自己喜欢的颜色,但是需要美感
pheatmap(data.1, color = colorRampPalette(c("navy", "white", "firebrick3"))(50))
修改颜色.png

热图单元格的设置

它默认是有单元格的,所以我们可以修改单元格的边框颜色或者将其去掉

border_color参数设定热图格子的边框色

# 修改边框颜色为黑色
pheatmap(data.1, border_color = "black")
边框黑色.png

border=FALSE参数去掉边框线

# 去掉边框线
pheatmap(data.1, border=FALSE)
去掉边框线.png

cellheight 修改每个单元格的高度;cellwidth 修改每个单元格的宽度

# 将单元格的高度和宽度都设置为20
pheatmap(data.1,cellwidth = 20, cellheight = 20)
单元格高度宽度.png
  • display_numbers = TRUE设定每个热图格子中显示相应的数值;
  • fontsize 修改热图中字体大小
  • number_color 设置显示内容的颜色
  • number_format 修改数值的格式,常用的有
    "%.2f"(保留小数点后两位)
    "%.1e"(科学计数法显示,保留小数点后一位)
# 将单元格的高度和宽度都设置为20
pheatmap(data.1, border_color = "black", #边框线为黑色
         display_numbers = TRUE,         #热图格子中显示相应的数值
         number_color = "black",         #字体颜色为黑色
         fontsize=10,                    #字体大小为10
         number_format = "%.1f",         #保留一位小数
         fontface="italic")              #将字体设置为斜体
单元格多参数修改.png

自定义数值的显示方式

# 数值大于1.5的用*表示
pheatmap(data.1, display_numbers = matrix(ifelse(data.1 > 1.5, "*"," "), nrow(data.1)))
单元的自定义.png

图例的设置

*legend TRUE或者FALSE,表示是否显示图例
*legend_breaks参数设定图例显示范围,legend_labels参数添加图例标签

# 设定图例显示范围,添加图例标签
pheatmap(data.1, legend_breaks = c(-2:2), 
    legend_labels = c("-1.0","0.0","1.0","2.0","3.0"))  
# legend = FALSE 去掉图例
pheatmap(data.1,legend = FALSE)
去掉图例.png

show_rownames和show_colnames参数设定是否显示行名和列名

#去除行名
pheatmap(data.1,show_rownames = FALSE)
除去行名.png

R函数pheatmap包绘制热图的基础部分就到这里了,接下来有机会给大家带来进阶部分。

谢谢你的阅读
如有不足之处,请联系小蘑菇!
欢迎关注微信公众号:fafu 生信 小蘑菇

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

推荐阅读更多精彩内容