R-韦恩图系列-ggVennDiagram - 简书 (jianshu.com)
R-韦恩图系列-VennDiagram - 简书 (jianshu.com)
R-韦恩图系列-UpSetR - 简书 (jianshu.com)
当可视化多个(>5)集合的交集情况时,传统韦恩图的效果就比较复杂,不够直观。UpSetR包可进行相对更加高效的展示,而且用法也很简单。
参考:https://cran.r-project.org/web/packages/UpSetR/vignettes/
# install.packages("UpSetR")
library(UpSetR)
-
upset()
绘图函数默认接受的集合对象为表格;如果我们提供为list,包装在fromList()
函数内部即可
genes <- paste0("gene",1:1000)
set.seed(202111001)
gene_list <- list(set_A = sample(genes,100),
set_B = sample(genes,200),
set_C = sample(genes,300),
set_D = sample(genes,200),
set_E = sample(genes,300),
set_F = sample(genes,300))
upset(fromList(gene_list))
如上图分为三个部分
1.1、左下角:为原始各个集合大小的柱状图
默认选择Size Top 5的集合,其次集合排列顺序从上到下为size从小到大的顺序
-
nsets =
参数可以设置展示集合的数目; -
sets =
可以直接指定选择哪些set集合纳入分析;keep.order = F
参数可以设置是否按照提供数据的集合顺序展示;
upset(fromList(gene_list),
sets = names(gene_list), keep.order = TRUE)
2、右上角:各组排列组合的交集数目柱状图展示
- 如上图,纳入6种集合应该有很多种交集可能,但是默认最多展示40种intersect。
nintersects
可指定展示的intersect 种类数,如果设置为nintersects = NA
则展示所有的可能组合。
另外默认不会展示size为0的intersect,可通过设置empty.intersections = "on"
进行展示
upset(fromList(gene_list), sets = names(gene_list),
nintersects =NA, empty.intersections = "on")
- 选取的标准默认是首先按照 intersect 构成集合数由低到高,然后再按照intersect size由高到低(即
group.by = "degree"
, 如果group.by = "sets"
则表示按照集合组成排序)。
upset(movies, group.by = "sets", cutoff = 3)
order.by = "freq"
表示仅按照intersect size由高到低排序;order.by = "degree"
表示仅按照intersect 来源集合数由高到低排序;另外可进一步配合decreasing
参数设置是否逆序。
参数表示
upset(fromList(gene_list), order.by = "freq", decreasing = F)
3 格式设置
upset(fromList(gene_list),
number.angles = 30,
point.size = 3.5, #左下角的点
line.size = 2, #左下角的线
mainbar.y.label = "Gene Sets Intersections",
sets.x.label = "Genes Per Set",
mb.ratio = c(0.7, 0.3),
text.scale = c(1.5, 1.1, 1.5, 1, 1.2, 1.5)) #见下图箭头
#intersection size title, intersection size tick labels,
#set size title, set size tick labels,
#set names, numbers above bars)
以上是UpSetR的基础用法,此外还提供了三种高级作图技巧,下面仅展示效果,具体有需要时再学习。
网友评论