绘制Upset 图

绘制Upset 图

Upset 图(Upset Plot)是一种用于可视化集合间交集的图表,是传统维恩图的替代方法,特别适用于集合个数多或交集关系复杂的场景。它通过柱状图、点图和辅助条形图来直观展示集合交集的大小及分布。

1.Upset 图的结构

主交集柱状图:显示每种交集的大小。

X 轴:表示集合交集组合。

Y 轴:表示对应交集的大小(元素数量)。

集合连接点图:在柱状图下方显示交集涉及的集合。

用点连接线标识参与交集的集合。

点表示集合是否参与特定交集。

集合条形图(可选):在侧面显示每个集合的总大小。

2.Upset 图的优点

能清晰地展示多达几十个集合之间复杂的交集关系。

比维恩图更高效,避免因集合过多导致图表混乱。

提供交集大小的定量信息,而维恩图通常只能粗略估计。

3.UpSetR包绘图

准备的数据文件格式如下:

all_deg_id CK_vs_A CK_vs_B CK_vs_C CK_vs_D CK_vs_E

ENSRNA049471043 1 1 0 0 1

ENSRNA049471090 1 0 0 0 0

ENSRNA049471102 1 1 0 0 0

ENSRNA049471535 1 0 1 1 0

ENSRNA049473455 1 0 0 0 0

ENSRNA049475677 1 1 0 0 0

ENSRNA049476201 1 0 1 1 1

第一列为基因ID,后面每一列是不同的集合,集合中有此基因为1,没有便为0。

下载需要的包:

# 1.安装CRAN来源常用包#设置镜像,local({r <- getOption("repos")r["CRAN"] <- "http://mirrors.tuna.tsinghua.edu.cn/CRAN/"options(repos=r)})# 依赖包列表:自动加载并安装package_list <- c("ggplot2","UpSetR","devtools")# 判断R包加载是否成功来决定是否安装后再加载for(p in package_list){if(!suppressWarnings(suppressMessages(require(p, character.only = TRUE, quietly = TRUE, warn.conflicts = FALSE)))){install.packages(p, warn.conflicts = FALSE)suppressWarnings(suppressMessages(library(p, character.only = TRUE, quietly = TRUE, warn.conflicts = FALSE)))}}

读入数据:

#读入文件mydata<-read.table("Venn.txt",header=T,fill=T,check.names=FALSE,row.names = 1,na.strings="")head(mydata)

过滤基因:

#去掉都不存的基因mydata <- mydata[rowSums(mydata) != 0, ]

绘图:

upset(mydata,nsets = 10, #可视化数据集数量nintersects= 60, #显示前多少个交集main.bar.color = '#6778AE', #柱状图颜色matrix.color="black", #集合点的颜色

#sets.bar.color= "#F3B1A0", #条形图条形的颜色

sets.bar.color= c(brewer.pal(5,"Set3")), #颜色数量需与集合数量一致

set_size.show = F, #是否在条形图上显示集合大小shade.color = "#53A85F",#矩阵点图阴影的颜色mb.ratio = c(0.5, 0.5), #矩阵图与主柱图之比queries = list(list(query = intersects, #着重展示的交集params = list("CK_vs_A","CK_vs_B"),active = T,color="#B53E2B"),list(query = intersects,params = list("CK_vs_A"),active = T,color="#B53E2B")))

绘图如下:

好了,小编就先给大家介绍到这里。希望对您的科研能有所帮助!祝您工作生活顺心快乐!

相关推荐

《lol》半神角色介紹
365bet足球正网平台

《lol》半神角色介紹

📅 07-03 👀 8480
张大仙这么厉害为什么没有国服称号?网友:技术不差,莫非有故事?
王者荣耀李白谪仙醉月皮肤价格是多少 王者荣耀李白新皮肤价格介绍