使用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图了。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容