前面用2篇文章介绍了韦恩图的多种画法!
简单的韦恩图画法
ggplot2版本的韦恩图画法
普通的韦恩图显示2-4个集合效果比较好,但是如果有很多个集合,韦恩图就不太美观了,即使是支持最多7个集合的ggvenndiagram
,因为彼此交叉太多,已经不利于呈现数据细节了。
library (ggVennDiagram)library (ggplot2) sets <- list( a = sample(1 :500 ,300 ), b = sample(1 :500 ,350 ), c = sample(1 :500 ,420 ), d = sample(1 :500 ,300 ), e = sample(1 :500 ,400 ), f = sample(1 :500 ,380 ), g = sample(1 :500 ,400 ) ) ggVennDiagram(sets, category.names = c("set 1" ,"set 2" ,"set 3" ,"set 4" ,"set 5" ,"set6" ,"set7" ), set_size = 6 , label = "none" , edge_lty = "solid" , edge_size = 1.2 ) + scale_fill_gradient(low = "grey90" ,high = "grey60" )
plot of chunk unnamed-chunk-1 这时候使用upset plot 可能是更加合适的选择。
在R里面有很多包可以画upset plot,我们主要学习UpSetR
和complexheatmap
。
upsetR 基础使用 这个包的基础使用方法其实很简单,对于上面的数据集,直接使用就行。
library (UpSetR) upset(fromList(sets),nsets = 7 ) # 也可以从矩阵或者数据框读取
plot of chunk unnamed-chunk-2 这个图细节很多,但是不难理解,主体就是3各部分组成的。
“ 左边条形显示每个集合元素数量,上面条形图展示每个交集内元素数量,下面的点(矩阵)表示所有出现的交集。
很多细节都是可以调整的,大家可以通过?upset
查看所有支持的参数,下面介绍一些常用的。
upset(fromList(sets), order.by = "freq" , # 排序方式 nsets = 5 , # 展示几个集合,按照数量从大到小排列,或者使用sets参数指定集合名字 mb.ratio = c(0.55 ,0.45 ), # 条形图和矩阵的相对比例 number.angles = 30 , # 条形图上面数字角度 point.size = 3 , # 点的大小 line.size = 1.2 , # 线条粗细 mainbar.y.label = "size of intersection" , # 上面条形图的标题 sets.x.label = "the number of each sets" , # 坐标条形图的标题 text.scale = c(1.3 , 1.3 , 1 , 1 , 2 , 1.2 ) # 元素大小 )
text.scale 控制7个元素的大小,要么提供1个数,要么提供7个数,每个数对应的元素种类如下:intersection size title, intersection size tick labels, set size title, set size tick labels, set names, numbers above bars
个性化特定列(选择指定列) 可以通过一些简单的参数直接改变一些元素的颜色。
upset(fromList(sets),order.by = "freq" , matrix.color = "firebrick" , main.bar.color = "steelblue" , sets.bar.color = "grey70" )
plot of chunk unnamed-chunk-4 如果要指定某一个交集 ,改变外观,就需要queries
参数。
upset(fromList(sets),order.by = "freq" , main.bar.color = "steelblue" , sets.bar.color = "grey70" , # 选择指定交集,突出显示 queries = list( list(query = intersects, params = list("b" ,"f" ,"e" ),color = "orange" ,active = T ), # 选择b,f,e的交集 list(query = intersects, params = list("g" ,"f" ,"e" ),color = "red" ,active = T ) # 选择e,f,g的交集 ) )
plot of chunk unnamed-chunk-5 顾名思义,这个queries
参数其实就是一个查询 ,把符合查询条件的交集找出来,然后赋予特定的颜色标记等,达到突出显示某些结果的作用。
关于这个queries 还有很多其他用法,不过需要的数据格式也是要提供更多的信息,大家有需要的可以至官网 [1] 查看更多内容。
或者等我更新
后面会继续介绍这个upsetr 包,十分强大,可以自定义的细节太多了~
参考资料 [1] upsetr: https://cran./web/packages/UpSetR/vignettes/queries.html