news 2026/5/7 18:11:34

别再只画热图了!用CIBERSORT做完免疫浸润后,这3种高级可视化技巧让你的文章更出彩

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
别再只画热图了!用CIBERSORT做完免疫浸润后,这3种高级可视化技巧让你的文章更出彩

免疫浸润分析进阶:3种让CIBERSORT结果脱颖而出的可视化策略

在肿瘤微环境研究中,免疫细胞浸润分析已成为揭示疾病机制和治疗反应的关键工具。CIBERSORT作为最常用的反卷积算法之一,其输出结果的可视化方式往往决定了研究成果的呈现效果。许多研究者止步于基础的箱线图、热图和柱状图,却忽略了数据背后更丰富的故事。本文将分享三种高阶可视化技巧,帮助您从海量数据中提炼出更具科学价值和视觉冲击力的发现。

1. 动态堆叠面积图:揭示样本间免疫景观演变

传统的柱状图虽然能展示免疫细胞比例,但难以呈现样本间的动态变化规律。堆叠面积图通过连续的色彩区块和流畅的曲线,可以直观反映不同免疫细胞群体在样本序列中的消长关系。

1.1 数据预处理与排序逻辑

在绘制前需要对CIBERSORT结果进行结构化处理:

library(ggplot2) library(dplyr) library(ggsci) # 读取CIBERSORT结果 cibersort_res <- read.table("res.txt", header=TRUE, row.names=1) # 添加样本分组信息并转换长格式 plot_data <- cibersort_res[,1:22] %>% tibble::rownames_to_column("Sample") %>% mutate(Group = ifelse(grepl("Tumor", Sample), "Tumor", "Normal")) %>% tidyr::pivot_longer(cols = 2:23, names_to = "CellType", values_to = "Proportion")

样本排序策略

  • 按特定临床指标(如肿瘤分级)排序
  • 使用无监督聚类结果排序
  • 根据关键免疫细胞丰度梯度排序

1.2 进阶堆叠图实现

基础堆叠面积图只需简单调整geom_area()参数,但要让图表更具专业性,需要考虑以下元素:

ggplot(plot_data, aes(x=reorder(Sample, Proportion), y=Proportion, fill=CellType)) + geom_area(alpha=0.8, color="white", size=0.2) + scale_fill_manual(values = pal_nejm("default")(22)) + theme_minimal() + labs(x="Samples", y="Immune Cell Proportion") + theme( axis.text.x = element_text(angle=90, hjust=1, vjust=0.5, size=8), legend.position = "right", panel.grid.major = element_blank() ) + facet_grid(~Group, scales="free_x", space="free_x")

提示:当样本量较大时,建议使用interaction()函数结合临床特征创建更精细的分面条件,避免图表过于拥挤。

1.3 临床关联增强技巧

为提升图表的科学价值,可以:

  1. 在顶部添加临床特征注释条
  2. 用垂直线标记治疗时间点
  3. 添加关键免疫检查点的表达趋势线
# 添加PD-L1表达趋势示例 pd_data <- data.frame( Sample = rownames(expression_matrix), PDL1 = expression_matrix["CD274",] ) ggplot() + geom_area(data=plot_data, aes(x=Sample, y=Proportion, fill=CellType)) + geom_line(data=pd_data, aes(x=Sample, y=PDL1*0.3, group=1), color="black", size=1, linetype="dashed") + scale_y_continuous(sec.axis = sec_axis(~./0.3, name="PD-L1 Expression"))

2. 复杂分组可视化:超越简单比较的统计洞察

常规的组间比较往往掩盖了样本内部的异质性。通过引入配对分析、时间序列分析和亚组分解,可以挖掘更深层的生物学意义。

2.1 配对样本分析实现

对于治疗前后配对样本,使用连接线+箱线图的混合图表:

# 准备配对数据 paired_data <- cibersort_res %>% filter(Group %in% c("Pre-treatment","Post-treatment")) %>% mutate(PatientID = substr(Sample, 1, 5)) ggplot(paired_data, aes(x=Group, y=CD8.T.cells)) + geom_boxplot(width=0.3, fill="lightgray", outlier.shape=NA) + geom_line(aes(group=PatientID), color="darkgray", alpha=0.5) + geom_point(aes(color=Response), size=3) + stat_compare_means(paired=TRUE, label="p.signif") + scale_color_manual(values=c("blue","red")) + labs(title="CD8+ T Cell Dynamics During Treatment")

2.2 时间序列免疫特征分析

对于多时间点数据,采用平滑曲线展示免疫细胞比例变化趋势:

time_data <- cibersort_res %>% mutate(Timepoint = as.numeric(gsub("Week","", Timepoint))) ggplot(time_data, aes(x=Timepoint, y=Tregs, color=Response)) + geom_smooth(method="loess", se=FALSE, span=0.8) + geom_point(position=position_jitter(width=0.2)) + scale_x_continuous(breaks=seq(0,12,2)) + labs(y="Treg Proportion", x="Treatment Duration (weeks)")

2.3 多因素分组热图

将临床特征与免疫特征结合,创建信息丰富的注释热图:

library(ComplexHeatmap) # 创建注释信息 ha <- HeatmapAnnotation( df = clinical_data[,c("Stage","MSI","EBV")], col = list( Stage = c("I"="blue","II"="green","III"="orange","IV"="red"), MSI = c("MSS"="gray","MSI-H"="purple"), EBV = c("Positive"="black","Negative"="white") ) ) # 选择关键免疫细胞 cell_select <- c("CD8.T.cells","Tregs","M1.Macrophages","M2.Macrophages") Heatmap(t(scale(cibersort_res[,cell_select])), top_annotation = ha, col = circlize::colorRamp2(c(-2,0,2), c("blue","white","red")), show_row_names = FALSE, name = "Z-score" )

3. 多组学关联分析:构建免疫微环境全景图

将免疫浸润数据与其他组学特征关联,可以揭示更完整的肿瘤-免疫互作网络。

3.1 免疫-突变负荷相关性分析

使用气泡图展示免疫细胞与肿瘤突变负荷(TMB)的关系:

cor_data <- merge(cibersort_res, tmb_data, by="Sample") ggplot(cor_data, aes(x=TMB, y=CD8.T.cells)) + geom_point(aes(size=Neoantigen, color=Immunotherapy_Response)) + geom_smooth(method="lm", se=FALSE, color="darkgray") + ggpubr::stat_cor(method="spearman", label.sep="\n") + scale_color_manual(values=c("gray","red")) + labs(x="Tumor Mutation Burden", y="CD8+ T Cell Infiltration")

3.2 通路活性-免疫细胞网络图

通过WGCNA等共表达分析方法,构建免疫细胞与通路活性的关联网络:

library(igraph) # 构建关联矩阵 cor_matrix <- cor( cbind( cibersort_res[,1:10], pathway_scores[,c("IFN-gamma","TGF-beta","WNT")] ) ) # 创建网络图 net <- graph_from_adjacency_matrix( (abs(cor_matrix) > 0.6)*cor_matrix, weighted=TRUE, mode="undirected" ) plot(net, vertex.color=ifelse(grepl("pathway",names(V(net))),"lightblue","pink"), vertex.size=sqrt(degree(net))*5, edge.width=E(net)$weight*2, layout=layout_with_fr)

3.3 空间转录组整合展示

对于有空间转录组数据的样本,可以创建免疫细胞空间分布叠加图:

library(Seurat) library(ggplot2) # 将CIBERSORT结果映射到空间坐标 spatial_data <- merge(spatial_coords, cibersort_res, by="Sample") ggplot(spatial_data, aes(x=x_coord, y=y_coord)) + geom_point(aes(color=Macrophages), size=1.5) + scale_color_gradientn(colors=c("blue","yellow","red")) + geom_point(data=subset(spatial_data, Tumor==1), shape=21, size=2, color="black") + theme_void() + coord_fixed()

4. 可重复分析与自动化报告

确保分析流程可重复是研究质量的重要保障。通过R Markdown创建自动化分析报告模板:

```{r setup, include=FALSE} knitr::opts_chunk$set(echo=FALSE, message=FALSE) library(CIBERSORT) library(ggplot2) ``` # Immune Profiling Report for `r params$project` ## CIBERSORT Summary ```{r summary} res <- readRDS("cibersort_results.rds") cell_summary <- apply(res[,1:22], 2, median) knitr::kable(sort(cell_summary, decreasing=TRUE)[1:5]) ``` ## Top Visualization ```{r visualization, fig.height=8} # 自动选择丰度最高的细胞类型 top_cell <- names(sort(cell_summary, decreasing=TRUE))[1] ggplot(res, aes(x=Group, y=.data[[top_cell]])) + geom_boxplot(aes(fill=Group)) + ggpubr::stat_compare_means() + labs(title=paste(top_cell, "by Group")) ```

注意:建议使用params参数实现项目名称和关键参数的动态替换,使模板适用于不同数据集。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/7 18:09:44

滑动窗口算法在不同场景下的解题模板

目录 一、什么情况下需要用滑动窗口? 二、滑动窗口适合解决什么问题? 三、滑动窗口的核心思想 四、滑动窗口常见分类 类型一:最长无重复窗口 类型二:固定长度窗口 类型三:最短覆盖窗口 类型四:替换连续区间,使整体满足条件 五、四道题的本质区别 六、滑动窗口…

作者头像 李华
网站建设 2026/5/7 18:04:28

如何快速找回忘记的压缩包密码:ArchivePasswordTestTool 实用指南

如何快速找回忘记的压缩包密码&#xff1a;ArchivePasswordTestTool 实用指南 【免费下载链接】ArchivePasswordTestTool 利用7zip测试压缩包的功能 对加密压缩包进行自动化测试密码 项目地址: https://gitcode.com/gh_mirrors/ar/ArchivePasswordTestTool 你是否曾经因…

作者头像 李华
网站建设 2026/5/7 18:01:54

打造你的专属AI助手:NextChat让智能对话触手可及

打造你的专属AI助手&#xff1a;NextChat让智能对话触手可及 【免费下载链接】ChatGPT-Next-Web ✨ Light and Fast AI Assistant. Support: Web | iOS | MacOS | Android | Linux | Windows 项目地址: https://gitcode.com/GitHub_Trending/ch/ChatGPT-Next-Web 你是否…

作者头像 李华