05.热图

a1 <- rnorm(100)
dim(a1) <- c(5,20)

pheatmap::pheatmap(a1)
Rplot01.png
a2 <- rnorm(100)+2
dim(a2)=c(5,20)
pheatmap::pheatmap(a2)
Rplot01.png
pheatmap(cbind(a1,a2))

将两个表放在一起画热图;但是在这个图里,对a1,a2里面的每一列自动排序了
Rplot02.png
pheatmap(cbind(a1,a2),cluster_cols=F)
#cluster_cols=F, 不让数据内部排序,整体a1,a2比较

不让数据内部排序,整体a1,a2比较
Rplot04.png

给变量名字

b <- cbind(a1,a2)
b <- as.data.frame(b)

把b变成数据框,每一列就有了名字
数据框有名字
给数据框的行列命名
a1 <- rnorm(100)
dim(a1) <- c(5,20)
a2 <- rnorm(100)+2
dim(a2)=c(5,20)
b <- cbind(a1,a2)
b <- as.data.frame(b)
names(b)=c(paste('a1',1:20,sep = '_'),paste('a2',1:20,sep = '_'))
pheatmap::pheatmap(b)
Rplot01.png
pheatmap::pheatmap(b,cluster_cols=F)

cluster_cols=F取消排序
cluster_cols=F取消排序
代码拆解、给代码命名
b <- cbind(a1,a2)
b <- as.data.frame(b)
names(b)=c(paste('a1',1:20,sep = '_'),paste('a2',1:20,sep = '_'))
pheatmap::pheatmap(b)
> paste('a1',1:20)
 [1] "a1 1"  "a1 2"  "a1 3"  "a1 4"  "a1 5"  "a1 6"  "a1 7"  "a1 8" 
 [9] "a1 9"  "a1 10" "a1 11" "a1 12" "a1 13" "a1 14" "a1 15" "a1 16"
[17] "a1 17" "a1 18" "a1 19" "a1 20"

> paste('a1',1:20,sep = '_')#可能会出现'a1 1 _',把每行代码分别运行就会好
 [1] "a1_1"  "a1_2"  "a1_3"  "a1_4"  "a1_5"  "a1_6"  "a1_7"  "a1_8" 
 [9] "a1_9"  "a1_10" "a1_11" "a1_12" "a1_13" "a1_14" "a1_15" "a1_16"
[17] "a1_17" "a1_18" "a1_19" "a1_20"

c(paste('a1',1:20,sep = '_'),paste('a2',1:20,sep = '_'))
 [1] "a1_1"  "a1_2"  "a1_3"  "a1_4"  "a1_5"  "a1_6"  "a1_7"  "a1_8" 
 [9] "a1_9"  "a1_10" "a1_11" "a1_12" "a1_13" "a1_14" "a1_15" "a1_16"
[17] "a1_17" "a1_18" "a1_19" "a1_20" "a2_1"  "a2_2"  "a2_3"  "a2_4" 
[25] "a2_5"  "a2_6"  "a2_7"  "a2_8"  "a2_9"  "a2_10" "a2_11" "a2_12"
[33] "a2_13" "a2_14" "a2_15" "a2_16" "a2_17" "a2_18" "a2_19" "a2_20"

names(b) <- c(paste('a1',1:20,sep = '_'),paste('a2',1:20,sep = '_'))
pheatmap::pheatmap(b)
 #paste(c('a1','a2'),1:40,sep = '_')#自己随便改的
 [1] "a1_1"  "a2_2"  "a1_3"  "a2_4"  "a1_5"  "a2_6"  "a1_7"  "a2_8" 
 [9] "a1_9"  "a2_10" "a1_11" "a2_12" "a1_13" "a2_14" "a1_15" "a2_16"
[17] "a1_17" "a2_18" "a1_19" "a2_20" "a1_21" "a2_22" "a1_23" "a2_24"
[25] "a1_25" "a2_26" "a1_27" "a2_28" "a1_29" "a2_30" "a1_31" "a2_32"
[33] "a1_33" "a2_34" "a1_35" "a2_36" "a1_37" "a2_38" "a1_39" "a2_40"
学习包的方法
?pheatmap

把实例中的example中的代码打进去,运行

# Create test matrix
test = matrix(rnorm(200), 20, 10)
test[1:10, seq(1, 10, 2)] = test[1:10, seq(1, 10, 2)] + 3
test[11:20, seq(2, 10, 2)] = test[11:20, seq(2, 10, 2)] + 2
test[15:20, seq(2, 10, 2)] = test[15:20, seq(2, 10, 2)] + 4
colnames(test) = paste("Test", 1:10, sep = "")
rownames(test) = paste("Gene", 1:20, sep = "")

# Draw heatmaps
pheatmap(test)
pheatmap(test, kmeans_k = 2)
pheatmap(test, scale = "row", clustering_distance_rows = "correlation")
pheatmap(test, color = colorRampPalette(c("navy", "white", "firebrick3"))(50))
pheatmap(test, cluster_row = FALSE)
pheatmap(test, legend = FALSE)
创建矩阵
test = matrix(rnorm(200), 20, 10)
屏幕截图 2022-03-15 181445.png
给矩阵做出数据差
test[1:10, seq(1, 10, 2)] = test[1:10, seq(1, 10, 2)] + 3
test[11:20, seq(2, 10, 2)] = test[11:20, seq(2, 10, 2)] + 2
test[15:20, seq(2, 10, 2)] = test[15:20, seq(2, 10, 2)] + 4
#这些代码的意义就是为该矩阵创建一个差,使其能分析出差异
#第一行:取1:10行,取(1,3,5,7,9)列,每一个数值+3

#seq(1, 10, 2)
[1] 1 3 5 7 9
test[1:10, seq(1, 10, 2)] 
#取1:10行,取(1,3,5,7,9)列

          [,1]     [,2]     [,3]     [,4]     [,5]
 [1,] 2.461216 3.941112 3.540708 3.560276 4.494728
 [2,] 3.017270 4.145309 4.372118 1.917767 2.806879
 [3,] 3.290116 2.102957 2.491475 2.399375 2.986099
 [4,] 3.715698 3.567388 4.810664 3.169702 4.545596
 [5,] 3.400343 2.615763 3.375856 2.532111 3.040975
 [6,] 3.721175 2.348180 3.922074 2.988972 3.835639
 [7,] 3.800795 3.864160 4.222244 4.485441 1.907291
 [8,] 2.242058 3.922189 2.307712 2.665809 4.960910
 [9,] 3.205740 2.752304 3.891801 3.791830 1.377026
[10,] 3.069984 2.516898 2.709539 3.738636 4.990948

已有数值梯度但是行名列名未变化
屏幕截图 2022-03-15 182719.png
给test行列命名
colnames(test) = paste("Test", 1:10, sep = "")
rownames(test) = paste("Gene", 1:20, sep = "")

行名列名已修改
屏幕截图 2022-03-15 182758.png
绘制test热图
pheatmap::pheatmap(test)
Rplot02.png
修改test热图
pheatmap::pheatmap(test, kmeans_k = 2)

cluster是把一堆基因当做一个值,低频需求


Rplot03.png
pheatmap::pheatmap(test, scale = "row", clustering_distance_rows = "correlation")

侧面从10至-2变位为2至-2,放大了差异,让颜色加深


Rplot04.png
pheatmap::pheatmap(test, color = colorRampPalette(c("navy", "white", "firebrick3"))(50))

改颜色


Rplot05.png
pheatmap::pheatmap(test, cluster_row = FALSE)
Rplot06.png
pheatmap::pheatmap(test, legend = FALSE)
Rplot07.png
pheatmap::pheatmap(test, display_numbers = TRUE)

每一个空格加上数字


Rplot04.png
pheatmap::pheatmap(test, display_numbers = TRUE, number_format = "\%.1e")

报错

pheatmap::pheatmap(test, display_numbers = matrix(ifelse(test > 5, "*", ""), nrow(test)))

大于固定值的加"*"


Rplot02.png
pheatmap::pheatmap(test, cluster_row = FALSE, legend_breaks = -1:4, legend_labels = c("0",
"1e-4", "1e-3", "1e-2", "1e-1", "1"))
Rplot03.png
pheatmap::pheatmap(test, cellwidth = 15, cellheight = 12, main = "Example heatmap")

调整格式


Rplot05.png
pheatmap::pheatmap(test, cellwidth = 15, cellheight = 12, fontsize = 8, filename = "test.pdf")

将其保存为pdf

添加行、列
# Generate annotations for rows and columns
annotation_col = data.frame(
                    CellType = factor(rep(c("CT1", "CT2"), 5)), 
                    Time = 1:5
                )
rownames(annotation_col) = paste("Test", 1:10, sep = "")

annotation_row = data.frame(
                    GeneClass = factor(rep(c("Path1", "Path2", "Path3"), c(10, 4, 6)))
                )
rownames(annotation_row) = paste("Gene", 1:20, sep = "")

准备行名、列名


屏幕截图 2022-03-15 202348.png

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

推荐阅读更多精彩内容