RNA-seq生信软件R语言做生信

pheatmap()画图2

2019-04-22  本文已影响7人  多啦A梦的时光机_648d

一:创建矩阵:

# 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

搞定!

上一篇下一篇

猜你喜欢

热点阅读