pheatmap包学习

作者: drlee_fc74 | 来源:发表于2019-04-09 20:11 被阅读38次

    pheatmap

    pheatmap热图绘制

    加载所需要的包

    library(pheatmap)
    library(tidyverse)
    
    ## ── Attaching packages ──────────────────────────────────────────────────────────────────────────────────────────────────────── tidyverse 1.2.1 ──
    
    ## ✔ ggplot2 2.2.1     ✔ purrr   0.2.4
    ## ✔ tibble  1.4.2     ✔ dplyr   0.7.4
    ## ✔ tidyr   0.8.0     ✔ stringr 1.3.0
    ## ✔ readr   1.1.1     ✔ forcats 0.3.0
    
    ## ── Conflicts ─────────────────────────────────────────────────────────────────────────────────────────────────────────── tidyverse_conflicts() ──
    ## ✖ dplyr::filter() masks stats::filter()
    ## ✖ dplyr::lag()    masks stats::lag()
    

    读入数据

    mRNA <- read.csv("mRNA.csv", row.names = 1)
    

    查看数据

    dim(mRNA)
    
    ## [1] 10 10
    
    mRNA[1:5,1:5]
    
    ##          TCGA.3X.AAV9.01A TCGA.3X.AAVA.01A TCGA.3X.AAVB.01A
    ## EVX1             3.166316        12.398085        0.2020127
    ## PSORS1C3        40.911014        19.686677      112.0638554
    ## KLK8            62.634384         0.000000        0.0000000
    ## ZNF880          43.752488        52.678184       68.0266351
    ## KLK10           86.754056         2.724418      121.4368925
    ##          TCGA.3X.AAVC.01A TCGA.3X.AAVE.01A
    ## EVX1             3.554979         2.748956
    ## PSORS1C3        58.395365        29.313010
    ## KLK8             3.592886         0.000000
    ## ZNF880          25.269561        25.993532
    ## KLK10           24.103295        14.008254
    

    最初原始的热图绘制

    pheatmap(mRNA)
    
    image.png

    热图颜色的调整

    1. color 进行颜色调整 默认为colorRampPalette(rev(brewer.pal(n = 7, name = “RdYlBu”)))(100) 括号中的100代表渐变的时候图例的区分度 breaks 改变图例的范围。如果颜色设定为100个区分,breaks最好也有100个。
    • 通俗点儿说就是,通过color和break制定颜色的分布范围,然后数据集中的数值在分布范围中找相同的颜色再进行填充。
    • 这样可以让两个不同的热图使用同一个颜色分布的图例
    pheatmap(mRNA, color = colorRampPalette(c("#3C7DAF", "#EAF4F1","#FFFCBA", "#E83140"))(100))
    
    image.png
    pheatmap(mRNA, color = colorRampPalette(c("#3C7DAF", "#EAF4F1","#FFFCBA", "#E83140"))(100), 
             breaks = seq(-10,150,length.out = 100))
    
    image.png

    列名和行名的改变

    1. show_rownames/show_colnames 是否去掉行名和列名
    2. labels_row/labels_col 自定义行名和列名
    pheatmap(mRNA, show_rownames = F, show_colnames = F)
    
    image.png
    labels_row <- str_c("G",1:10)
    pheatmap(mRNA, labels_row = labels_row)
    
    image.png

    表达值的变换

    1. scale参数把数据集的数据按照中间值来进行数据变化。默认的为“none”,可以改为“row”或者“column”
    pheatmap(mRNA, scale = "row")
    
    image.png
    pheatmap(mRNA, scale = "column")
    
    image.png

    单元格的改变

    1. border_color 改变单元格边框的颜色。默认为“grey60”.
    2. cellheight/cellwidth 改变单元格的高度和宽度。 默认为NA
    pheatmap(mRNA,  scale = "row",cellheight = 5, cellwidth = 10 ,border_color = "black")
    
    image.png

    聚类的调整

    1. cluster_cols/cluster_rows 是否显示聚类
    2. treeheight_row/treeheight_col 聚类中高度的调整,默认为50
    3. clustering_distance_rows/clustering_distance_cols 聚类排列的方式,可选’correlation’, ‘euclidean’(default), ‘maximum’, ‘manhattan’, ‘canberra’, ‘binary’, ‘minkowski’
    4. clustering_method 聚类方法的调整。可选的参数有 ‘ward’, ‘ward.D’, ‘ward.D2’, ‘single’, ‘complete’, ‘average’, ‘mcquitty’, ‘median’ or ‘centroid’。
    5. cutree_rows/cutree_cols 基于层次聚类,划分行的簇数,如果未聚集行,则忽略参数
    pheatmap(mRNA,  treeheight_col = 25, treeheight_row = 75)
    
    image.png
    pheatmap(mRNA,  treeheight_col = 25, treeheight_row = 75, clustering_distance_col = "correlation")
    
    image.png
    pheatmap(mRNA, cutree_col = 2)
    
    image.png
    pheatmap(mRNA, gaps_col = 5)
    
    image.png

    一般可以做聚类,但是高度设置为0

    对热图进行分割

    1. gaps_row/gaps_col 对热图进行分割,只有没有聚类的时候进行使用
    • 参数中的数字代表从哪里进行分割
    pheatmap(mRNA, cluster_rows = F, cluster_cols = F, gaps_row = 3, gaps_col = c(4,8))
    
    image.png

    相关分析

    1. method 各个样本之间的相关分析 可选“pearson” (default), “kendall”, or “spearman”
    pheatmap(mRNA, methods = "kendall")
    
    image.png

    图例的显示与否

    1. legend 图例是否显示
    2. legend_breaks 对图例进行分割不按照默认的显示
    3. legend_labels 对分割的图例进行自定义标签
    pheatmap(mRNA, legend = F)
    
    image.png
    pheatmap(mRNA, legend_breaks = c(0,100,120))
    
    image.png
    pheatmap(mRNA, legend_breaks = c(0,100,120), legend_labels = c("min", "median", "max"))
    
    image.png

    设置图的标题

    pheatmap(mRNA, main = "example")
    
    image.png

    字体大小的调整

    1. fontsize 对所有字体进行调整
    2. fontsize_row/fontsize_col 对行/列的字体大小进行调整 默认值为10
    pheatmap(mRNA, fontsize_col = 15, fontsize_row = 5)
    
    image.png

    网格中数字的显示

    1. display_numbers 是否显示数字
    2. number_format 数字的格式 “%.2f”代表小数点儿后两位; “%.1e”代表科学指数符号
    3. fontsize_number 显示数字的大小 默认为0.8 * fontsize即8
    4. number_colors 单元格中的颜色
    pheatmap(mRNA, display_numbers = T, number_format = "%.1f", fontsize_number = 7, number_color = "black")
    
    image.png
    pheatmap(mRNA, display_numbers = matrix(ifelse(mRNA > 100, "*", ""), nrow(mRNA)))
    
    image.png

    添加注释

    • 添加注释之前首先要定义注释
    1. annotation_row/annotation_col 定义注释的类别
    2. annotation_col 定义注释的颜色
    3. annotation_names_row/annotation_names_col 逻辑值是否显示注释的名字
    4. annotation_legend 是否显示**注释的图例
    5. drop_levels 逻辑值决定是否没有提到的水平显示在图例中
    ##定义列的注释
    annotation_col <- data.frame(
      Gender = factor(rep(c("F", "M"), 5)),
      Type = factor(rep(str_c("G",1:5),2)))
    ##一定要记得数据框的行名
    rownames(annotation_col) <- colnames(mRNA)
    ##定义行的注释
    annotation_row <- data.frame(
      module = factor(rep(c("grey60", "blue"),5)),
      example = factor(rep(c("abv", "eqw"),5))
    )
    rownames(annotation_row) <- rownames(mRNA)
    ##定义注释的颜色.使用list进行定义
    ann_colors <- list(
      Gender = c(F = "#007C46", M = "#00D0D1"),
      Type = c(G1 = "black",  G2 = "white",  G3 = "blue",  G4 = "#A25BAA", G5 = "orange"),
      module = c(grey60 = "black", blue = "orange"),
      example = c(abv = "#007C46", eqw = "#00D0D1")
    )
    pheatmap(mRNA, annotation_col = annotation_col, annotation_row = annotation_row ,annotation_names_row = T, annotation_legend = T,
             annotation_colors = ann_colors, annotation_names_col = F, gaps_row = 2)
    
    image.png

    文件的输出 filename 保存文件的文件名 width/height 定义文件的宽度/高度

    相关文章

      网友评论

        本文标题:pheatmap包学习

        本文链接:https://www.haomeiwen.com/subject/txxwiqtx.html