重现5.6分文章的免疫分型图

2022-03-28 15:03:08 浏览数 (1)

最近在做免疫浸润方面的分析,主要是重现5.6分文章《Classification of triple-negative breast cancers based on Immunogenomic profiling》的分析内容。其中有一张免疫分型的热图,非常的重要,通过该图(下图)可以发现,乳腺癌可以很好的分成3个免疫亚型。今天就教大家采用pheatmap 重现这张图。

话不多说,上代码:

代码语言:javascript复制
############################################################
# 1. pheatmap安装                                         ##
############################################################
install.packages('pheatmap')
install.packages('dplyr')

############################################################
# 2. 设置运行环境                                         ##
############################################################
library(pheatmap)
library(readr)

# 文件路径
pdata_file <- "F:/LookGene/Course/junior/R_plot/pheatmap/pheatmap_data.txt"

# 工作目录
work_dir <- "F:/LookGene/Course/junior/R_plot/pheatmap"

# 工作目录如果不存在,则创建目录
if( !file.exists(work_dir) ){
  if( !dir.create(work_dir, showWarnings = FALSE, recursive = TRUE) ){
    stop(paste("dir.create failed: outdir=",work_dir,sep=""))
  }
}

# 设置工作目录(输出目录)
setwd(work_dir)
############################################################
# 3. pheatmap绘图                                         ##
############################################################
# 读取数据
ph.data <- read_tsv(pdata_file)
View(ph.data)

# 将数据进行转换
feature.name <- unlist(ph.data[1])
ph.data <- as.matrix(ph.data[-1])
rownames(ph.data) <- feature.name
pdata <- ph.data[1:29,]
# 查看pheatmap使用方法
?pheatmap

########################################
# 绘图
########################################
# 设置方格显示颜色

ph.color <- colorRampPalette(c("navy", "white", "firebrick3"))(100)

# 先聚类,进行并分组
clust <- pheatmap(pdata, show_rownames = F, show_colnames = F,scale = 'row', color =ph.color )

# 按聚类情况进行样品分成3个组
col_tree_cut <- cutree(clust$tree_col,3)
sample_cluster <- as.data.frame(factor(col_tree_cut, 
                                       labels = c('Immunity_L','Immunity_M','Immunity_H')))
dim(sample_cluster)
colnames(sample_cluster) <- "Subtype"
sample_cluster$ID <- rownames(sample_cluster)
head(sample_cluster)

# 指定其他注释信息
annotation_col = data.frame(
  Subtype = factor(col_tree_cut, labels = c('Immunity_L','Immunity_M','Immunity_H')),
  Tumor_purrity = ph.data['TumorPurity',],
  Stromal_score = ph.data['StromalScore',],
  Immnue_score = ph.data['ImmuneScore',]
)
rownames(annotation_col) <- colnames(pdata)

# 指定注释信息的颜色表示
ann_colors = list(
  Subtype = c(Immunity_H = "red", Immunity_L = "green",Immunity_M="blue"),
  Tumor_purrity = c("green", "red"),
  Stromal_score = c("green", "red"),
  Immnue_score = c("green", "red")
)


# 绘图
pheatmap(pdata, show_rownames = F, show_colnames = F,scale = 'row', color =ph.color ,
         annotation_col = annotation_col,annotation_colors = ann_colors, cutree_cols=3,
         filename = 'pheatmap.pdf')

想要掌握这热图的画法,需要先了解一下pheatmap的使用方法。pheatmap中文说明文档见下表。

pheatmap说明文档

参数

详细说明

mat

绘图用的数值矩阵

color

颜色向量

kmeans_k

kmeans聚类的数目,用于合并行为不同cluster

breaks

用于将矩阵中的数值映射为颜色,可定义显色范围

border_color

方格边框颜色,NA为没有边框

cellwidth

方格宽度,NA为自适应画图大小

cellheight

方格高度,NA为自适应画图大小

scale

行或列进行中心化和标准化

cluster_rows

是否行聚类,默认True

cluster_cols

是否列聚类,默认True

clustering_distance_rows

行聚类的距离函数(参考dist函数), 默认为欧氏距离

clustering_distance_cols

列聚类的距离函数, 默认为欧氏距离

clustering_method

聚类的方法,参考 hclust

clustering_callback

聚类返回函数

cutree_rows

行层次聚类的数目

cutree_cols

列层次聚类的数目

treeheight_row

行聚类树的高度,默认 50

treeheight_col

列聚类树的高度,默认 50

legend

图例是否显示

legend_breaks

图例分割点

legend_labels

图例分割点名称

annotation_row

行注释信息的数据框

annotation_col

列注释信息的数据框

annotation_colors

行和列注释信息映射的颜色列表

annotation_legend

是否显示注释信息的图例

annotation_names_row

是否显示行注释信息的名称

annotation_names_col

是否显示列注释信息的名称

drop_levels

是否显示没有分类水平数据的图例

show_rownames

是否显示行名

show_colnames

是否显示列名

main

图片的标题

fontsize

字体大小, 默认为10

fontsize_row

行名的字体大小

fontsize_col

列名的字体大小

angle_col

列标签的角度,可选(0, 45, 90, 270, 315)

display_numbers

方格上是否显示矩阵的数值

number_format

数值显示的格式(C printf 风格)

number_color

数值的颜色

fontsize_number

数值的字体大小

gaps_row

行坐标位置设置 “空白分割”

gaps_col

列坐标位置设置 “空白分割”

labels_row

自定义行标签,替换行名

labels_col

自定义列标签,替换列名

filename

热图保存的名称

width

图片宽度

height

图片高度

silent

不绘图

na_col

NA在热图上显示的颜色

测试数据

  1. 如果有免疫浸润方面的分析需求。

0 人点赞