分享

超过六个元素的韦恩图你就玩不转了?

 微笑如酒 2018-04-04


去年的《生信草堂》推文中介绍过如何利用R包和一个简易网页版工具绘制韦恩图的方法, 但那些工具只能有效地处理5组数据,因为当超过5组数据时,韦恩图就不能表达数据之间的关系了。今天小编给大家介绍一个更加直观反映多组数据相交个数的图像表达工具——UpSetR


初 相 识

首先这是一个R包,用install.package就可以安装。官方给出的英文说明是“visualizes set intersections in a matrix layout and introduces aggregates based on groupings and queries”。简单来讲就是矩阵数据中每个维度数据之间交集的可视化表达工具。


深 入 了 解

UpSetR支持两种数据形式的输入,直接命令行输入和文件形式输入。直接命令行输入也有两种形式的表达方式,一种是直接输入要比较的列表即可,另一种是输入已经计算好交互数量的值。

我们先看列表输入如何绘制。假设需要画出三个列表的交集,举例如下:s

# example of list input (list of named vectors)

listInput <- list(one="">1, 2, 3, 5, 7, 8, 11, 12, 13), two = c(1, 2, 4, 5, 10), three = c(1, 5, 6, 7, 8, 9, 10, 12, 13))

upset(fromList(listInput))

结果如图1

                                                                           

对于比较简单的任务,我们可以直接输入交互值,代码如下:

example of expression input

expressionInput <- c(one=""> 2, two = 1, three = 2, `one&two` = 1, `one&three` = 4, `two&three` = 1, `one&two&three` = 2)

upset(fromExpression(expressionInput) )

结果跟图1是一样的,因为我们用的就是其列表中的数据。但这种输入数据的方式需要额外的工作量,估计没多少人会选择。


接下来我们来学习一下怎么大批量的从文件中导入数据。UpSetR自带的示例文件(mutations.csv)能够很方便地帮助我们学习其支持的文件输入格式。该文件存储以逗号分隔的矩阵数据,包含100gene283个特性,其中“1”表示该基因有此特性,“0”表示该基因无此特性。UpSetR会计算全部基因中特性为1的交集个数。示例代码如下:

mutations <->'extdata', 'mutations.csv', package = 'UpSetR'), header = T, sep = ',')
upset(mutations )

结果如图2,大家可以看到,在默认情况下,UpSetR默认输出交集个数大于0的组合。

除了默认模式,UpSetR支持指定需要交互的列以及输出交集个数为0的组合,代码如下:

upset(mutations, sets = c('PTEN', 'TP53', 'EGFR', 'PIK3R1', 'RB1', 'SPTA1'), sets.bar.color = 'red',order.by = 'freq', empty.intersections = 'on')

如图3,在这个示例中,我们指定了6个待交互的元素,并设置颜色为红色,同时令交互个数为0的组合也显示出来,并按照交集个数由大到小排列。


总  结

虽然UpSetR不是绘制本质上的韦恩图,但它以柱状图的形式清晰地表达了待研究集合之间的交集数目,它可以支持多种数据形式的输入,并且不受输入集合个数限制,是一款十分好用的绘图工具。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多