什么是Upset图?
对于集合的可视化,第一时间想到的都是韦恩图(venn diagram),一般集合不超过5个的时候,可视化效果还是不错的。但是一旦数据集增加,比如说五个的时候,你就很难从图中解读出想要的信息了。即便你把它画的很美观,但还是很难直观找到自己需要的信息。可视化的目的不是炫技,而是快速理解数据。而且韦恩图最大只支持7个数据集合。于是这时候就能体会出upset图的优势了。
输入数据:
代码部分
library(UpSetR)
library(VennDiagram)
#upset_list<-list(H7L1,H7L26,H7L27,H7L28,H7L29,H7L30,H7L31,H7L31,H7L32,H7L33)
upset_dat<-read.table("all.txt",sep ='\t')
upset_list <- list(upset_dat[,1], upset_dat[,2], upset_dat[,3], upset_dat[,4], upset_dat[,5], upset_dat[,6], upset_dat[,7],upset_dat[,8], upset_dat[,9]) # 制作Upset图搜所需要的列表文件
#names(upset_list) <- (c(H7L1,H7L26,H7L27,H7L28,H7L29,H7L30,H7L31,H7L31,H7L32,H7L33))
#names(upset_list) <- colnames(upset_dat[1:9]) # 把列名赋值给列表的key值
###列名
names(upset_list) <- c("HHZ","c2","c3","c4","c5","c6","c7","c8","c9")
upset(fromList(upset_list), # fromList一个函数,用于将列表转换为与UpSetR兼容的数据形式。
nsets = 100, # 绘制的最大集合个数
nintersects = 30, #绘制的最大交集个数,NA则全部绘制
order.by = "freq", # 矩阵中的交点是如何排列的。 "freq"根据交集个数排序,"degree"根据
keep.order = T, # 保持设置与使用sets参数输入的顺序一致。默认值是FALSE,它根据集合的大小排序。
mb.ratio = c(0.6,0.4), # 左侧和上方条形图的比例关系
text.scale = 0.7 # 文字标签的大小
)