单基因泛癌表达箱线图是泛癌分析文章必不可少的一个图,配对箱线图在很多文章中也有出现。本文讲解如何实现单个基因在泛癌表达箱线图和配对箱线图展示。
先上效果图:
1. 单基因泛癌表达箱线图
本首先是从xena下载泛癌矩阵。下载地址:https://xenabrowser.net/datapages/?cohort=TCGA%20Pan-Cancer%20(PANCAN)&removeHub=https%3A%2F%2Fxena.treehouse.gi.ucsc.edu%3A443 一般下载tpm格式即可。
然后是在同页面下载临床信息。
通过tidyverse R包进行数据的合并、转置等操作,得到如下数据框,其中每一行为一个样本,每一列为基因或临床信息(这里的tpm竟然有负数)。也可以参考2022新版TCGA数据下载与整理,人肉下载再手动合并(链接中是下载的count矩阵,也可以选择下载tpm那一列)。
以CBX3基因为例画图。
library(ggpubr)
# Type为Control和Tumor的分组,Cancer为33种肿瘤的名称。
p <- ggboxplot(pandata, x = "Cancer", y = "CBX3",
color = "Type", palette = "jco")+
rotate_x_text(angle = 90) #将x轴肿瘤名称旋转90°展示
p + stat_compare_means(aes(group = Type), label = "p.signif", label.y =11)
# label = "p.signif"表示星号表示,label="p.format"表示p值展示
# label.y表示设置星号的纵坐标。
图如下:
还可以显示散点:
library(ggpubr)
p <- ggboxplot(pandata, x = "Cancer", y = "CBX3",
color = "Type", palette = "jco",
add = "jitter")+
rotate_x_text(angle = 90)
p + stat_compare_means(aes(group = Type),label = "p.signif", label.y =11)
2. 单基因配对箱线图
先以BRCA为例
library(tidyverse)
BRCA=drawdata[pandata$Cancer=="BRCA",]
BRCA$ID=stringr::str_sub(BRCA$ID,1,12) # 取样本名字前12位
Normal=filter(BRCA,Type=="Normal")
Tumor=filter(BRCA,Type=="Tumor")
Tumor=Tumor[!duplicated(Tumor$ID),] #去除肿瘤组中的重复样本
index <- intersect(Normal$ID,Tumor$ID) #取正常和肿瘤组中共有患者
T1=filter(Tumor, ID %in% index)
N1=filter(Normal, ID %in% index)
data=rbind(T1,N1)
library(ggpubr)
p <- ggpaired(data, x = "Type", y = "CBX3",
color = "black",
fill = c("#E11E24","#FBB96F"),
line.color = "gray", line.size = 0.4,
ylab = "expression of CBX3",
palette = "npg")
p + stat_compare_means(paired = TRUE,label="p.signif", label.x.npc=0.4,comparisons=list(c("Tumor","Normal")))
p值显示:
library(tidyverse)
BRCA=drawdata[pandata$Cancer=="BRCA",]
BRCA$ID=stringr::str_sub(BRCA$ID,1,12) # 取样本名字前12位
Normal=filter(BRCA,Type=="Normal")
Tumor=filter(BRCA,Type=="Tumor")
Tumor=Tumor[!duplicated(Tumor$ID),] #去除肿瘤组中的重复样本
index <- intersect(Normal$ID,Tumor$ID) #取正常和肿瘤组中共有患者
T1=filter(Tumor, ID %in% index)
N1=filter(Normal, ID %in% index)
data=rbind(T1,N1)
library(ggpubr)
p <- ggpaired(data, x = "Type", y = "CBX3",
color = "black",
fill = c("#E11E24","#FBB96F"),
line.color = "gray", line.size = 0.4,
ylab = "expression of CBX3",
palette = "npg")
p + stat_compare_means(paired = TRUE,label="p.format", label.x.npc=0.4,comparisons=list(c("Tumor","Normal")))
至于单基因配对箱线图泛癌展示我还没想好,暂时只能用分面来解决。
library(ggpubr)
data=pandata
data$ID=stringr::str_sub(data$ID,1,12)
Tumor = subset(data,Type=="Tumor")
Tumor=Tumor[!duplicated(Tumor$ID),]
Normal = subset(data,Type=="Normal")
index <- intersect(Normal$ID,Tumor$ID)
T1=filter(Tumor, ID %in% index)
N1=filter(Normal, ID %in% index)
paireddata=rbind(T1,N1)
p <- ggpaired(paireddata,x="Type", y="CBX3",
color = "Type",palette = "jco",
line.color = "gray",line.size = 0.4,
facet.by = "Cancer",short.panel.labs = F)
p + stat_compare_means(label="p.signif",paired=T,label.x.npc=0.4,label.y=9)