求助:使用ComplexHeatmap绘制Oncoprint时遇多类报错
解决ComplexHeatmap绘制Oncoprint的常见问题
一、先解决包依赖与加载问题
- 加载ComplexHeatmap时报错是因为缺少依赖包
GetoptLong,直接安装并加载:
install.packages("GetoptLong") library(GetoptLong) library(ComplexHeatmap)
alter_graphic()函数属于ComplexHeatmap包,但旧版本可能缺失,建议用BiocManager安装最新版:
if (!require("BiocManager", quietly = TRUE)) install.packages("BiocManager") BiocManager::install("ComplexHeatmap", update = TRUE)
二、处理"argument 8 is empty"错误
这个错误核心原因是数据集格式不匹配或参数与数据类型不对应,按以下步骤排查:
- 确认数据集格式:Oncoprint要求行是基因,列是样本,每个单元格为突变类型(空/NA表示无突变)。如果你的数据集是行样本、列基因,必须转置:
# 假设导入的数据框名为df,转置后得到符合要求的格式 df_t <- t(df)
- 检查颜色向量与数据的匹配度:确保颜色向量的所有键(如"Missense")和数据中实际的突变类型完全一致,没有拼写差异(比如数据里是"Splice_site"而非"Splice site")。可以先查看数据中的所有突变类型:
# 查看所有非空的突变类型,确保都在你的col向量中 unique(na.omit(as.vector(df_t)))
- 简化测试代码,先跑基础版oncoprint,再逐步添加参数:
# 先导入数据(建议把谷歌表格下载为CSV后本地导入) df <- read.csv("你的数据集路径.csv", row.names = 1) df_t <- t(df) # 转置为基因行、样本列 # 定义颜色(确保和数据中的突变类型完全对应) col = c("Missense" = "blue", "Deletion" = "red", "Nonsense" = "#008000", "DelIns" = "yellow", "Frameshift" = "pink", "Splice site" = "brown") # 基础版oncoprint代码 oncoprint(df_t, alter_fun = list( background = function(x, y, w, h) grid.rect(x, y, w-unit(2, "pt"), h-unit(2, "pt"), gp = gpar(fill = "#CCCCCC", col = NA)), Missense = function(x, y, w, h) grid.rect(x, y, w-unit(2, "pt"), h-unit(2, "pt"), gp = gpar(fill = col["Missense"], col = NA)), Deletion = function(x, y, w, h) grid.rect(x, y, w-unit(2, "pt"), h-unit(2, "pt"), gp = gpar(fill = col["Deletion"], col = NA)), Nonsense = function(x, y, w, h) grid.rect(x, y, w-unit(2, "pt"), h-unit(2, "pt"), gp = gpar(fill = col["Nonsense"], col = NA)), DelIns = function(x, y, w, h) grid.rect(x, y, w-unit(2, "pt"), h-unit(2, "pt"), gp = gpar(fill = col["DelIns"], col = NA)), Frameshift = function(x, y, w, h) grid.rect(x, y, w-unit(2, "pt"), h-unit(2, "pt"), gp = gpar(fill = col["Frameshift"], col = NA)), "Splice site" = function(x, y, w, h) grid.rect(x, y, w-unit(2, "pt"), h-unit(2, "pt"), gp = gpar(fill = col["Splice site"], col = NA)) ), col = col)
基础版跑通后,再逐步添加手册中的注释、分组等参数,避免一次性添加过多参数增加排查难度。
三、数据集导入注意事项
从谷歌表格获取数据时,建议直接下载为CSV文件后本地导入,避免在线导入的权限或格式问题。导入时要确保没有多余的空行、空列,行名/列名正确对应基因和样本。
内容的提问来源于stack exchange,提问作者Pharmacos
相关产品推荐
相关产品推荐

