pheatmap()画图2

一:创建矩阵:

# 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 = "")

二:画pheatmap图

# Draw heatmaps

图:1:pheatmap(test)  ##啥都不加 

图2:pheatmap(test, kmeans_k = 2)   ##分成2x的图

图3:pheatmap(test, scale = "row", clustering_distance_rows = "correlation")  ##clustering_distance_row表示行距离度量的方法 #表示行聚类使用皮尔森相关系数聚类。

图4:pheatmap(test,color = colorRampPalette(c("navy", "white", "firebrick3"))(50))    ##赋值渐变颜色调色板colorRampPalette属性,选择“ 深蓝色,砖红色,”渐变,50就是将这三种颜色设置为50个梯度一般看到的这三个"green","black","red")

图5:pheatmap(test, cluster_row = FALSE)  ##我们不应该对行进行聚类   (##列的顺序是时间序列,我们不应该对列进行聚类)

图6:pheatmap(test,legend = FALSE)   ##是否显示图例


图1
图2
图3
图4


图5


图6

三:显示单元格内容

# Show text within cells

pheatmap(test, display_numbers = TRUE)

图7:pheatmap(test, display_numbers = TRUE, number_format = "%.2f")##number_format设置数值的格式,较常用的有"%.2f"(保留小数点后两位,1f,暴力小数点后1位),"%.1e"(科学计数法显示,保留小数点后一位)

图8:pheatmap(test, display_numbers = matrix(ifelse(test > 5, "*", ""), nrow(test)))##test的没一行中大于5的用*标出来

图9:pheatmap(test, cluster_row = FALSE, legend_breaks = -1:4, legend_labels = c("0", "1e-4", "1e-3", "1e-2", "1e-1", "1"))##在legend上的-1~4的位置显示'0', '1e-4', '1e-3', '1e-2', '1e-1', '1'

图10:pheatmap(test, border_color = blues9, display_numbers = TRUE)##热图的每个小块之间以灰色隔开(参数border_color,如果不想要border可以设置为blues9,当然也可以设置成其它颜色)


图7


图8



图9


图10

四:修正单元格大小,并将其保存到具有正确大小的文件中

# Fix cell sizes and save to file with correct size

图11:pheatmap(test, cellwidth = 15, cellheight = 12, main = "Example heatmap") #main可设置热图的标题

图12:pheatmap(test, cellwidth = 15, cellheight = 12,fontsize = 8, filename = "test.pdf") #fontsize设置字体大小,filename可直接将热图存出,支持格式png, pdf, tiff, bmp, jpeg,并且可以通过width(宽), height(高)设置图片的 大小;


图11


图12

五:为行和列生成注释并显示显示行和颜色注释

# 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 = "")

#Display row and color annotations

图13:pheatmap(test,annotation_col = annotation_col)  ##显示行列注释

图14:pheatmap(test, annotation_col = annotation_col, annotation_row = annotation_row)   ##行与列的注释分开

图15:pheatmap(test, annotation_col = annotation_col,annotation_legend = FALSE)##右上角注释图例不现实


图13


图14


图15

六:更改列中文本的角度

#Change angle of text in the columns

图16:pheatmap(test, annotation_col = annotation_col, annotation_row = annotation_row,angle_col = "45")##列下面的注释角度为45度'arg' should be one of “270”, “0”, “45”, “90”, “315”)

图17:pheatmap(test, annotation_col = annotation_col,angle_col = "0")  ##列下面的注释角度为0度


图16:


图17

七:指定颜色

# Specify colors

ann_colors= list(

  Time = c("white", "firebrick"),

  CellType = c(CT1 = "#1B9E77", CT2 = "#D95F02"),

GeneClass = c(Path1 = "#7570B3", Path2 = "#E7298A", Path3 = "#66A61E"))##注意ann_colors是列表

图18:pheatmap(test, annotation_col = annotation_col, annotation_colors = ann_colors, main = "Title")

图19:pheatmap(test, annotation_col = annotation_col, annotation_row = annotation_row, annotation_colors = ann_colors)

图20:pheatmap(test, annotation_col = annotation_col, annotation_colors =ann_colors[2]) 2可以改变得   

图21:pheatmap(test, annotation_col = annotation_col, annotation_colors =ann_colors[4])


图18


图19


图20


图21

八:生成有gap的热图

#Gaps in heatmaps 

图22:pheatmap(test, annotation_col = annotation_col, cluster_rows = FALSE, gaps_row = c(10, 14))  

图23:pheatmap(test, annotation_col = annotation_col, cluster_rows = FALSE, gaps_row = c(10, 14), cutree_col = 2)  #cutree_rows, cutree_cols可以根据行列的聚类数将热图分隔开


图22


图23

九:显示自定义字符串作为行/列名称

#Show custom strings as row/col names

labels_row = c("", "", "", "", "", "", "", "", "", "", "", "", "", "", "","", "","Il10", "Il15", "Il1b")##这里相当于是给表达量最高 的三个命名了

图24:pheatmap(test, annotation_col = annotation_col, labels_row = labels_row)

labels_row = c("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15",

               "16", "17", "18", "19", "20")   ##可以给所有的20行都命名(如第三幅图)

图25:pheatmap(test, annotation_col = annotation_col, labels_row = labels_row)  


图24


图25

十:从距离矩阵指定聚类

# Specifying clustering from distance matrix

drows = dist(test, method = "minkowski")    #表示行聚类除了使用皮尔森相关系数聚类,也可以自定义为这种minkowski

dcols = dist(t(test), method = "minkowski")

图26:pheatmap(test, clustering_distance_rows = drows, clustering_distance_cols = dcols)


图26

十一:使用群集回调选项修改群集的顺序

#Modify ordering of the clusters using clustering callback option

callback = function(hc, mat){

  sv = svd(t(mat))$v[,1]

  dend = reorder(as.dendrogram(hc), wts = sv)

  as.hclust(dend)

}

图27:pheatmap(test, clustering_callback = callback)


图27

十二:十一这一步可以用dendsort包画画

library(dendsort)

callback = function(hc, ...){dendsort(hc)}

图28:pheatmap(test, clustering_callback = callback)


图28

搞定!

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

推荐阅读更多精彩内容