使用UpSetR软件包绘制Upset图的方法

 本人最近在做比较基因组学分析的时候,发现用韦恩图来表示共有、特有的基因家族虽然直观,但一旦物种数目增多,就会变得不好看。于是,我师兄提议可以用Upset图来代替,我仿佛打开了新世界的大门,因为这种upset图确实在物种数多的情况下比韦恩图好看太多了。


这个图主要由三部分组成,让我们通过一个简化的日常生活场景来解释这个图。

假设你有多个不同的水果篮,每个篮子都有不同的水果。

左边的条形图(集合大小柱状图)

这就像每个篮子旁边都有一个标签,告诉你这个篮子里有多少个水果。所以,如果一个篮子里有10个苹果,那么它的标签上就写着10。

上面的条形图(交集大小柱状图)

这个部分告诉你,如果你从不同的篮子里同时拿出水果,你会得到多少个水果。比如,你可能同时从篮子A和篮子B中拿出3个苹果和2个香蕉。那么这个上面的条形图就会显示5,表示你总共拿了5个水果。

下面的点(矩阵视图)

这就像一个清单,告诉你哪些篮子被同时考虑了。如果你看到一个点在篮子A和篮子B下面,那就意味着你同时从这两个篮子里拿出了水果。

所以,总的来说,这个图就是一个高级的“水果拿取记录”。左边告诉你每个篮子里有多少水果,上面告诉你你一次从多个篮子里拿了多少水果,而下面的点则告诉你每次你是从哪些篮子里拿的。


那么,了解完Upset图后,现在我们就来看看如何基于这个R包绘制Upset图。

  首先,我之前绘制韦恩图用的是venn包以及VennDiagram包,其实UpSetR包的输入文件处理成和Venn包所需的输入文件一致就可以了。

  很简单,最基础的代码基本上就是:

library(UpSetR)

upset(fromList(sets),nsets = 10) 


很多细节都是可以调整的,大家可以通过?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) # 元素大小

      )


排序方式: 使用order.by = "freq"可以确保交集的大小从大到小进行排序。

展示集合数量:nsets = 5将只显示前五个最大的集合。

条形图与矩阵比例:mb.ratio = c(0.55,0.45)决定了主条形图和矩阵的比例。

角度与大小调整: 通过number.angles = 30和point.size = 3及line.size = 1.2来调整条形图数字的角度、点的大小和线条的粗细。

标题和标签: 为上面的条形图和坐标条形图增加描述性标题。

元素大小: 使用text.scale来调整文本和标签的大小。

颜色调整: 选择一种和谐的颜色方案,比如深蓝色、火砖红和灰色。

特定列的个性化: 使用queries参数来突出显示指定的交集,并给它们赋予独特的颜色。


text.scale参数在 UpSet 图中控制不同文本元素的大小。以下是每一个元素的详细解释:

intersection size title:

这是上方条形图的标题。它描述了交集的大小,即两个或多个集合共有的元素数量。

intersection size tick labels:

这是上方条形图y轴的刻度标签。它们通常是数字,表示交集中元素的数量。

set size title:

这是左边(或右边)条形图的标题。它描述了每个单独集合中的元素数量。

set size tick labels:

这是左边(或右边)条形图y轴的刻度标签。这些标签表示每个单独集合中的元素数量。

set names:

这些是集合的名称。在矩阵视图中,这些名称与每行相对应,表示不同的集合。

numbers above bars:

这是上方条形图上的数字。它们表示每个交集中元素的实际数量,直接放置在每个柱子上方。


基于以上参数,我们就可以自由地调整Upset图了。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容