热图:我要鲜明又直观的对比

0.需求

如果直接拿基因的log表达量去画热图,画风是这样的:

(示例矩阵没有行名和列名,有行名列名的矩阵可用show_rownames = F,show_colnames = F参数隐藏行列名)

rm(list = ls())
library(pheatmap)
load("exp.Rdata")
exp[1:4,1:4]
##          [,1]     [,2]     [,3]     [,4]
## [1,]  4.54610  4.40210  4.49239 10.25060
## [2,] 11.25310 11.20760 11.17820  6.98791
## [3,]  5.81479  5.91209  6.11324 11.54910
## [4,] 11.64830 11.63730 11.59630  7.90508
pheatmap(exp)

可以看到,两组之间能看出差别,但是对比不鲜明。这个矩阵一行是一个基因在6个样本里的表达量,一列是一个样本里所有基因的表达量。我们如果可以强调列与列之间的差别,图就会更加直观了,实现这一目的的办法是将数据按行标准化,用到scale,它既是一个函数,又是pheatmap的一个参数。

1.强调列与列之间的差别

有两个方法:一个是内部标准化,画图时使用pheatmap自带的scale参数:

pheatmap(exp,scale = "row")

一个是外部标准化,先scale再画图。

n = t(scale(t(exp)))
pheatmap(n)

这个例子 样本数量较少,两张图一毛一样。我们来换个样本量多的数据。

2.换个样本多的数据来试试

这是tinyarray包里的内置数据,装了包就可以直接用哦

if(!require(tinyarray)) devtools::install_github("xjsun1221/tinyarray")
library(tinyarray)
exp2 = log2(exp_hub1+1)
pheatmap(exp2,show_colnames = F,scale = "row")
pheatmap(t(scale(t(exp2))),show_colnames = F)

这次,两张图看出区别了吧?

聚类情况是一致的,但是颜色分配不同哦,由于取了标准化以后还是有个别比较大/小的值,所以第一张图大片的颜色是比较淡的;第二张图大片的颜色是红色和黄色,边上挤着一点点蓝色。

配色不同,是因为breaks的计算模式不同,如果自己设置相同的breaks,两张图就一毛一样了哦

拼起来的图更直观~

自定义breaks设置了颜色分配范围,超出范围的格子将会以最大/小值颜色表示(我设置的是-3到3范围内从蓝到红的渐变,那么大于三的值会是最红的颜色,小于三的值则是最蓝的颜色)

当然 根据实际情况,你也可以设置-2到2的范围,-4到4的范围,可以调试,让他显示出鲜明的对比为止~

library(gridExtra)
p1 = pheatmap(exp2,show_colnames = F,scale = "row",breaks = seq(-3,3,length.out = 100),silent = T)
p2 = pheatmap(t(scale(t(exp2))),show_colnames = F,breaks = seq(-3,3,length.out = 100),silent = T)
grid.arrange(grobs=list(p1$gtable, p2$gtable))

从前遇到这种颜色,都是手动设置一下阈值,现在知道了breaks参数,就齐活啦,两个方法都可以完美的搞起了~

一个不重要的知识点

解释一下为什么上面的代码length.out是100。这是因为热图的默认配色是colorRampPalette(rev(brewer.pal(n = 7, name = "RdYlBu")))(100),这是100种颜色的渐变,所以breaks需要和这里的100呼应。

so,当你换颜色的时候,比如:

pheatmap(exp2,
         show_colnames = F,
         scale = "row",
         color = colorRampPalette(c("navy", "white", "firebrick3"))(50),
         breaks = seq(-3,3,length.out = 50))

前面是50,后面也要是50,对应起来~

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

推荐阅读更多精彩内容