首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >RNAseq | ComplexHeatmap绘制临床数据热图(所见即所得)

RNAseq | ComplexHeatmap绘制临床数据热图(所见即所得)

作者头像
生信补给站
发布于 2024-04-24 07:52:01
发布于 2024-04-24 07:52:01
1.8K10
代码可运行
举报
文章被收录于专栏:生信补给站生信补给站
运行总次数:0
代码可运行

当使用各种机器学习方法(CoxBoostLassoSuperPCrandomForestSRCElastic Net等)完成预后模型后,除了在组学层面( IPS评分药物反应预测WGCNA等)进行一系列的分析外,还可以将定义的风险得分和临床指标进行比较。如Expression of hub genes of endothelial cells in glioblastoma-A prognostic model for GBM patients integrating single-cell RNA sequencing and bulk RNA sequencing中下图所示

最初我完成该图的方法是用含有基因表达的热图,然后截图或者PS成只有临床指标。这里介绍使用ComplexHeatmap直接完成该图。

一 载入R包,数据

使用前面系列推文的TCGA-SKCM的临床数据和随访数据,以及经过lasso模型计算的风险评分结果 。

后台回复“临床”既可获取Expr_phe_cli_riskscore.RData的示例数据。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(tidyverse)
library(ComplexHeatmap)
library(ggsci) #颜色
library(circlize) #连续颜色

#载入数据
load("Expr_phe_cli_riskscore.RData")

riskScore_cli2 <- riskScore_cli %>% 
  inner_join(phe) %>% 
  column_to_rownames("sample") %>% 
select(- "_PATIENT")
head(riskScore_cli2)

只要数据框中含有想展示的表型数据即可,一般会有风险得分,生存信息以及重要的临床指标,当然也可以其他重点关注的指标:(1)重点基因突变与否,例如KRAS突变 (2)某个CNV有无(3)TMB ,MSI,IDH等等你想展示的指标。如果添加基因表达量的话那就是正常的热图即可。

2,临床数据处理

在TCGA下载的临床数据需要进行一些处理,可以在excel中完成,当然也可以使用R完成。

包括但不限于以下(1)连续数值按照某个阈值转为分类 (2)向量和因子的转化 (3)将数据中的T1a ,T1b,T1 统一为T1期 类似的整理。

(1)和(2)比较简单,如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#连续数值,按需转为分类
riskScore_cli2$Age =ifelse(riskScore_cli2$age > 60,">60","<=60")

#字符串转为因子
riskScore_cli2$OS <- as.factor(riskScore_cli2$OS)
riskScore_cli2$tumor_stage <- as.factor(riskScore_cli2$tumor_stage)

(3)可以使用多种方式完成数据整理

A :T分期使用直接指定的方法

注意%in% c("T1a","T1b","T1")的向量中要列出所有想转化的,假设有T1c的话 也需要加上。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
table(riskScore_cli2$pathologic_T)
# T0  T1 T1a T1b  T2 T2a T2b  T3 T3a T3b  T4 T4a T4b Tis  TX 
# 23  10  21  10  30  32  15  14  39  37  13  26 109   7  44

riskScore_cli2$pathologic_T[riskScore_cli2$pathologic_T %in% c("T1a","T1b","T1")] <- "T1"
riskScore_cli2$pathologic_T[riskScore_cli2$pathologic_T %in% c("T2a","T2b","T2")] <- "T2"
riskScore_cli2$pathologic_T[riskScore_cli2$pathologic_T %in% c("T3a","T3b","T3")] <- "T3"
riskScore_cli2$pathologic_T[riskScore_cli2$pathologic_T %in% c("T4a","T4b","T4")] <- "T4"
table(riskScore_cli2$pathologic_T)

B:N分期,使用gsub替换的方式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
table(riskScore_cli2$pathologic_N)
# N0  N1 N1a N1b  N2 N2a N2b N2c  N3  NX 
#226  17  19  37   6  13  21   9  56  34 

riskScore_cli2$pathologic_N <- gsub("N1[abc]?", "N1", riskScore_cli2$pathologic_N)
riskScore_cli2$pathologic_N <- gsub("^N2.*", "N2", riskScore_cli2$pathologic_N)
riskScore_cli2$pathologic_N <- gsub("^N3.*", "N3", riskScore_cli2$pathologic_N)

C:M分期,使用grepl的方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
table(riskScore_cli2$pathologic_M)
# M0  M1 M1a M1b M1c 
#407   5   5   5   9 

riskScore_cli2$pathologic_M <- ifelse(grepl("^M1", riskScore_cli2$pathologic_M), 
                                      "M1", riskScore_cli2$pathologic_M)
riskScore_cli2$pathologic_M <- ifelse(grepl("^M0", riskScore_cli2$pathologic_M), 
                                      "M0", riskScore_cli2$pathologic_M)

D:还可以使用str_replace 或者 str_detect等方法进行转化,这里示例展示一下,不运行不影响推文的后续操作 。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
riskScore_cli2$pathologic_T2 <- riskScore_cli2$pathologic_T
# str_replace
riskScore_cli2$pathologic_T2 <- str_replace(riskScore_cli2$pathologic_T2, "T1[a-d-c-d]?", "T1")
#str_detect
riskScore_cli2$pathologic_T2 <- ifelse(str_detect(riskScore_cli2$pathologic_T2, "^T1"), "T1", riskScore_cli2$pathologic_T2)

以上就完成了本次分析需要的数据处理部分。

二 临床指标热图可视化

1,直接绘制

使用ComplexHeatmap绘制临床数据注释图 ,重点在于构建一个和临床数据相同列的0矩阵

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 提取想展示的临床数据
riskScore_cli2 <- riskScore_cli2 %>% 
  select(riskScore:tumor_stage,Age) %>% 
  select(- "age")
# 构建列注释块
ha=HeatmapAnnotation(df=riskScore_cli2)
# 构建zero矩阵
zero_row_mat=matrix(nrow=0, ncol=nrow(riskScore_cli2))
#绘制热图
Hm <- Heatmap(zero_row_mat, top_annotation=ha)
Hm
#调整legend的位置和大小
draw(Hm, merge_legend = TRUE, 
     heatmap_legend_side = "bottom", 
     annotation_legend_side = "bottom",
     width = unit(16, "cm"), height = unit(1, "cm")
     )

2,图形优化调整

上面可以顺利的完成图形可视化,相较文献还可以在(1)表型内容排序,比如优先Score高低排序,然后Stage排序(2)表型注释的顺序,比如先展示Score,然后OS,stage等 和(3)每种表型进行自定义的颜色设置 上进行优化和调整。

(1)表型内部排序 ,使用arrange 进行排序,可以依次选择多个指标

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
riskScore_cli3 <- riskScore_cli2 %>%
  arrange(riskScore2,OS,tumor_stage,gender,OS.time,Age)

(2)和(3)一起在HeatmapAnnotation注释中解决,如果为省事未展示T M N分期 ,可以自行添加。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(circlize)
#连续性变量的颜色设置
col_fun_time <- colorRamp2(
  c(0, 3000, 11000),  #根据值的范围设置
  c("#DC0000FF", "grey", "#1f78b4")
)
#
ha <- HeatmapAnnotation(
  Score = riskScore_cli3$riskScore2,
  Stage = riskScore_cli3$tumor_stage ,
  OS.Status = riskScore_cli3$OS,
  OS.Time = riskScore_cli3$OS.time,
  Gender = riskScore_cli3$gender ,
  Age = riskScore_cli3$Age,
  col = list( 
    Score = c("High" = "#BC3C29FF", "Low" = "#0072B5FF"),
    OS.Status = c("0" = "#E18727FF", "1" = "#20854EFF"), #分类
    OS.Time = col_fun_time , #连续
    Gender = c("female" = "#AB3282", "male" = "#3A6963"),
    Age = c("<=60" = "#712820", ">60" = "#E4C755"),
    Stage = c("0" = "#E64B35FF", "1" = "#4DBBD5FF",
              "2" = "#00A087FF", "3" = "#3C5488FF",
              "4" = "#DC0000FF", "NA" = "#8491B4FF")
    
  )
)

可视化展示

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Hm <- Heatmap(zero_row_mat, top_annotation=ha)
draw(Hm, merge_legend = TRUE, 
     heatmap_legend_side = "bottom", 
     annotation_legend_side = "bottom",
     width = unit(16, "cm"), height = unit(1, "cm")
)

以上就完成了风险得分和临床指标的热图,拿去发文章吧。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-04-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信补给站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
示例数据能分享一下吗?方便复现 谢谢大佬
示例数据能分享一下吗?方便复现 谢谢大佬
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
数据分析:基因突变瀑布图统计以及可视化
生信学习者
2024/11/19
2990
数据分析:基因突变瀑布图统计以及可视化
RNAseq|构建预后模型后你还需要这些图,森林图,诺莫图,校准曲线,DCA决策曲线
通过RNAseq|Lasso构建预后模型,绘制风险评分的KM 和 ROC曲线构建的预后模型KM显著,还需要验证其独立性?
生信补给站
2023/08/25
2K0
RNAseq|构建预后模型后你还需要这些图,森林图,诺莫图,校准曲线,DCA决策曲线
免疫浸润结果分子分型(一致性聚类ConsensusClusterPlus)
分子分型也是生信灌水的常见知识点之一。可以用于分子分型的方法非常多,比如:一致性聚类、非负矩阵分解、PCA等等,当然这些方法不需要我们手动去计算,都是有成熟的R包帮我们做。
医学和生信笔记
2023/08/30
2.2K0
免疫浸润结果分子分型(一致性聚类ConsensusClusterPlus)
我以为热图只能画数值型数据,万万没想到...
今天在群里看到一个非常漂亮的热图,我以为是什么奇怪的新R包画的,转了一圈发现原来还是大名鼎鼎的ComplexHeatmap丫。今天的代码都是在作者写的书基础上探索学习的,书在:https://jokergoo.github.io/ComplexHeatmap-reference/book/
科研菌
2021/02/19
2K0
我以为热图只能画数值型数据,万万没想到...
用 ComplexHeatmap 包绘制复杂热图
在 ComplexHeatmap 中单个热图由热图主体和热图组件组成。热图主体可按行或列进行拆分。热图组件包括标题,进化树,矩阵名称和热图注释,可分别放置于热图主体的四个侧面上,这些组件也可根据热图主体的顺序进行重新排序或拆分。
生信菜鸟团
2021/01/18
7.9K0
用 ComplexHeatmap 包绘制复杂热图
高颜值复杂热图绘制小技巧
这幅图展示了 两分组(KRAS-mt vs KRAS-wt)差异分析结果中 21个上调基因 与 14 个下调 差异基因在不同样本中的基因表达水平模式,热图上方 展示了 样本的许多临床性状特征 如 Stage分期,年龄,性别,CMS 分子分期等。热图如下:
生信技能树
2025/01/19
2500
高颜值复杂热图绘制小技巧
RNAseq|Lasso构建预后模型,绘制风险评分的KM 和 ROC曲线
经过RNAseq|批量单因素生存分析 + 绘制森林图分析后得到了预后显著的基因集。后续的常见做法是通过机器学习(lasso,随机森林,SVM等)方法进行变量(基因)筛选,然后构建预后模型。
生信补给站
2023/08/25
10.6K0
RNAseq|Lasso构建预后模型,绘制风险评分的KM 和 ROC曲线
文献复现-单细胞揭示新辅助治疗后NSCLC的免疫微环境变化
文章在这:Tumor microenvironment remodeling after neoadjuvant immunotherapy in non-small cell lung cancer revealed by single-cell RNA sequencing 方法:来自3名治疗前和12名接受新辅助PD-1阻断联合化疗的非小细胞肺癌(NSCLC)患者的~92,000个单细胞的转录组。根据病理反应将12个治疗后样本分为两组:MPR(n = 4)和非MPR(n = 8)。
生信菜鸟团
2023/09/09
2.2K0
文献复现-单细胞揭示新辅助治疗后NSCLC的免疫微环境变化
带临床信息的肿瘤突变maf文件分析维度更多
每个癌症都去找各自的肿瘤突变maf文件很麻烦,所以我们才会选择 PanCanAtlas Publications Scalable Open Science Approach for Mutation Calling of Tumor Exomes Using Multiple Genomic Pipelines ,详见:https://gdc.cancer.gov/about-data/publications/mc3-2017 :它提供如下所示的文件:
生信技能树
2021/10/12
1.4K0
【R语言】临床特征分组,多分类转换成二分类
前面我们提到过T分期一般可以分成T1,T2,T3和T4四个期。另外一个常用的临床特征是组织病理分期,一般也是分为四期stage I,stage II, stage III和stage IV。四组在我们做差异表达分析的时候是比较麻烦的。
生信交流平台
2022/09/21
6920
TCGAbiolinks获取癌症临床信息
前面我们简单的介绍了一下肿瘤的TNM分期系统。今天我们来用R获取感兴 趣的癌症的临床信息,其中就可以找到我们上次讲到的TNM分期信息。
生信交流平台
2020/08/06
1.9K0
TCGAbiolinks获取癌症临床信息
单基因生信分析流程(3)一文解决生存分析和临床参数相关分析
本文目的 (1)绘制生存分析图 (2)临床参数相关分析 加载所必须的包 # =============================================================
用户1359560
2019/05/15
3.3K0
scRNA|ComplexHeatmap自定义单细胞转录组celltype-level 热图可视化
使用之前注释过的sce.anno.RData数据 ,后台回复 anno 即可获取
生信补给站
2023/09/26
2.4K1
scRNA|ComplexHeatmap自定义单细胞转录组celltype-level 热图可视化
生信代码:绘制基因组突变全景图
对于基因组突变全景图相信大家并不陌生,它是基因组学突变数据最基本的可视化展示方法之一。一张漂亮的,高大上的基因突变全景图不仅能展示出丰富的信息,还能为你的文章增色不少,其绘制方法也多种多样。今天我们则来看看最常用的两个包maftools和ComplexHeatmap在绘制基因组突变全景图上的异同。首先让我们来简单的了解下这两个包:
科研菌
2021/02/19
6.8K0
生信代码:绘制基因组突变全景图
ComplexHeatmap|根据excel表绘制突变景观图(oncoplot)
https://github.com/jokergoo/ComplexHeatmap
生信补给站
2020/08/05
2.3K1
ComplexHeatmap|根据excel表绘制突变景观图(oncoplot)
R绘制甲基化和表达谱联合分析热图
随着时代的发展,单一研究转录组、蛋白代谢、甲基化等已经难以满足研究者越来越高的研究期望,大家更多地期望联合多种数据进行多组学联合分析。那么这时候,一种好的展示结果的方式无疑会为发表高分文章增光添彩。
生信交流平台
2020/08/06
4.1K1
R绘制甲基化和表达谱联合分析热图
单基因生信分析流程(1)一文解决TCGA数据下载整理问题
在平常科研工作中,经常有师兄师姐师弟师妹问我:我现在有一个单基因,我该怎么开展生信研究?出现这个问题的原因是:(1)目前生信研究火热也逐渐受到认可(2)许多医学生在开展实验研究的同时,如果结合生信,则自己的结论和工作量更加吸引到编辑和手审稿人(3)现有的geo、TCGA或者其他免费公开数据库确实是很多研究者的第一选择。
用户1359560
2019/05/14
4.9K0
单基因生信分析流程(1)一文解决TCGA数据下载整理问题
TCGA的28篇教程-风险因子关联图-一个价值1000但是迟到的答案
其实那个需求很简单:https://www.ncbi.nlm.nih.gov/pubmed/24893932 文章里面也说的很清楚,如下:
生信技能树
2018/08/16
1.3K0
TCGA的28篇教程-风险因子关联图-一个价值1000但是迟到的答案
是否所有的癌症的TNM分期都有生存预测意义
在 https://gdc.cancer.gov/about-data/publications/pancanatlas 页面下载 即可,简单的归纳整理后:
生信技能树
2021/10/12
1.8K0
热图 + 森林图联合展示:表达趋势与相关性风险一图呈现
在科研可视化中,热图(heatmap) 是用来展示高维基因表达矩阵的经典利器,能够清晰地揭示样本间和基因间的表达模式。而 森林图(forest plot) 则以其直观的置信区间和效应量展示能力,在分析基因与临床特征的关联中大放异彩。
生信菜鸟团
2025/07/31
2760
热图 + 森林图联合展示:表达趋势与相关性风险一图呈现
推荐阅读
相关推荐
数据分析:基因突变瀑布图统计以及可视化
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档