oncoplot (瀑布图)经常出现在肿瘤研究中的Fig1 ,可以展示多种变异类型的全景图。 前面介绍过了使用maftools包 对MAF文件进行绘制maftools | 从头开始绘制发表级oncoplot(瀑布图),以及使用ComplexHeatmap 包对excel文件进行绘制ComplexHeatmap|根据excel表绘制突变景观图(oncoplot)。 当我只有基因和变异类型的时候,那就想办法整理成 excel的形式,然后使用ComplexHeatmap绘制。 #加载R包
library(tidyverse) library(openxlsx) library(reshape2) library(ComplexHeatmap)
#读取数据 data <- read.xlsx("test.xlsx",sheet = 1) head(data) tail(data)
信息好少,但是好在绘制瀑布图的核心信息都在。 A:距离maf文件差距好大,放弃! B:距离推文的excel表格(下图),好像差异不大 。 就是长 转 宽 ,然后多种Exonic_Function的就用逗号分隔就行。 2.1 使用reshape2包的dcast函数 #尝试转化 dcast <- dcast(data, gene~ sample) head(dcast) 和想象的好像有点不一样,是不是有很多问号❓ 这里不应该是基因名字吗?为什么是数值?数值又代表的什么含义呢? 注意看一下提示信息,“Aggregation function missing: defaulting to length” ,提到因为Aggregation function missing,默认是length。说明现在的数值代表length ,而length也就是个数。 那如果Aggregation function 不默认,是用什么参数设置呢?可以自定义成Exonic_Function使用逗号连接吗? 2.2 擅长使用R帮助
使用 ?dcast 看一下,发现fun.aggregate就是我们想要的参数,😄 下面再构建一个 完成逗号连接 的函数即可,这个使用paste即可 f.agg <- function(x) paste(x, collapse =";") OK,都准备好了,转成输入文件样式的宽型数据吧 f.agg <- function(x) paste(x, collapse =";") a <- dcast(data, gene~ sample,fun.aggregate = f.agg )
rownames(a) <- a$gene mat <- a[,-1] mat[is.na(mat)]<-"" mat[1:6,1:5] 可以看到数据转化完成,接下来就是可视化了。
这里需要注意的就是有多少种Exonic_Function类型,就指定(1)多少种颜色,(2)多少种位置,高度和宽度 以及(3)多少种展示的标签 #指定颜色, 调整颜色代码即可 col <- c( "MISSENSE_VARIANT" = "blue" , "INFRAME_DELETION" = "green" , "STOP_GAINED" = "yellow" , "SYNONYMOUS_VARIANT" = "red", "INFRAME_INSERTION" = "black" ) #指定变异的样子,x,y,w,h代表变异的位置(x,y)和宽度(w),高度(h) alter_fun <- list( background = function(x, y, w, h) { grid.rect(x, y, w-unit(0.5, "mm"), h-unit(0.5, "mm"), gp = gpar(fill = "#CCCCCC", col = NA)) }, MISSENSE_VARIANT = function(x, y, w, h) { grid.rect(x, y, w-unit(0.5, "mm"), h-unit(0.5, "mm"), gp = gpar(fill = col["MISSENSE_VARIANT"], col = NA)) }, INFRAME_DELETION = function(x, y, w, h) { grid.rect(x, y, w-unit(0.5, "mm"), h*0.33, gp = gpar(fill = col["INFRAME_DELETION"], col = NA)) }, STOP_GAINED = function(x, y, w, h) { grid.rect(x, y, w-unit(0.5, "mm"), h-unit(0.7, "mm"), gp = gpar(fill = col["STOP_GAINED"], col = NA)) }, SYNONYMOUS_VARIANT = function(x, y, w, h) { grid.rect(x, y, w-unit(0.5, "mm"), h*0.7, gp = gpar(fill = col["SYNONYMOUS_VARIANT"], col = NA)) }, INFRAME_INSERTION = function(x, y, w, h) { grid.rect(x, y, w-unit(0.5, "mm"), h*0.8, gp = gpar(fill = col["INFRAME_INSERTION"], col = NA)) } )
#指定变异类型的标签,和数据中的类型对应 heatmap_legend_param <- list(title = "Alternations", at = c("MISSENSE_VARIANT" , "INFRAME_DELETION", "STOP_GAINED" , "SYNONYMOUS_VARIANT" , "INFRAME_INSERTION"), labels = c( "MISSENSE_VARIANT" , "INFRAME_DELETION", "STOP_GAINED" , "SYNONYMOUS_VARIANT" , "INFRAME_INSERTION")) 使用complexheatmap的oncoPrint函数绘制即可 #画图 oncoPrint(mat, alter_fun = alter_fun, col = col, column_title = column_title, heatmap_legend_param = heatmap_legend_param) 这里只是提供绘制的思路和代码,更美观的配色和合理的位置,高度和宽度设置,还是需要进行调试的。 更多的优化调整方式,添加注释方式详见ComplexHeatmap|根据excel表绘制突变景观图(oncoplot)
R 可视化的代码和例子很多,如何处理成可以用的 “输入文件” ,是件比较耗时 但是很核心的内容。精心整理(含图PLUS版)|R语言生信分析,可视化(R统计,ggplot2绘图,生信图形可视化汇总)
|