UpSetR:多数据集绘图可视化处理利器

说到集合数据可视化,我们第一时间想到的就是韦恩图。在 NGS 相关的研究中,韦恩图用来直观表征不同的集合之间元素重叠关系,是经常在文献中出现的图。


在集合数少的时候韦恩图是很好用的,但是当集合数多比如 5 个以上的时候那就会看的眼花缭乱了。比如下面这张发表在 Nature 上,显示了香蕉基因组与其他五种物种的基因组之间关系的 6 个集合韦恩图。

1665bfc1-a447-4f75-bbb7-bdc70e748749.png

虽然这个图看起来很酷很有趣,但却也让人眼花:我们很难尝试从中提取任何信息;很难去跟踪哪个交叉点涉及哪些集合;也不清楚哪个是可视化中最大的交叉点——要获取这些信息我们必须逐一阅读图中的标签。


为了解决上面的问题,今天介绍一个专门用来做集合可视化,并且不受输入的集合个数限制的 R 包 UpSetR ,该包来源于 UpSet(一种新的用于数据集,以及它们的交集、组合定量分析的可视化技术)。Python 里面也有一个相似的包 py-upset 。此外还有个基于网页版本的 UpSetR shiny app 以及基于 github 的源代码库。



图形解读


UpSetR 可视化的结果图的基本上长得像下图这个样子:

e8285715-c83d-466a-bcb6-800b7fc51615.png


与之相对应的韦恩图:

d4091a53-acb2-4661-9487-1393ffd3bd71.png

上述两个图是从 UpSetR 内置的分析了不同电影所属类型的 movies 数据集中选取了 Name、Action Comedy、Drama 4 列数据进行画图得到的结果:

  • 黑色点表示该区域是有数据的且上方的 Intersection Size 条形图是该区域的数值大小;灰色的点表示该区域没有数据;

  • 不同点连线表示存在交集,具体交集的个数可以看上方的条形图;

  • 不同类型的数据的总量可以看左边的 Set Size 条形图。


安装


UpSetR 有两种方式安装:

# 从 CRAN 安装
install.packages("UpSetR")

# 从 Github 上安装
devtools::install_github("hms-dbmi/UpSetR")

【左右滑动查看完整信息】



数据导入


UpsetR 接受三种类型的数据输入:

  • 表格形式,在 R 语言里就是数据框了。行表示元素,列表示数据集分配和额外信息。

  • 元素名的集合( fromList )。

  • venneuler 包引入的用于描述集合交集的向量 ( fromExpression)。

#fromList
listinput <- list(one = c(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))

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

【左右滑动查看完整信息】


接下来就可以绘制绘制图形了:

library(UpSetR)
upset(fromList(listinput), order.by = "freq")

#下面绘制的图形等同于上图
upset(fromExpression(expressionInput), order.by = "freq")

【左右滑动查看完整信息】

0b5c22ff-0b75-4ece-a114-765e3544dbd5.png



参数详解


下面所有的例子都将使用 UpSetR 内置的数据集 movies 来绘制。


#导入数据
movies <- read.csv(system.file("extdata", "movies.csv", package = "UpSetR"), header = TRUE, sep = ";")
#先大致浏览一下该数据集,数据集太长,就只看前几列
knitr::kable(head(movies[,1:10]))

【左右滑动查看完整信息】

5aeec39d-a986-4551-b303-47f2eb0da098.png

该数据集展示的是电影名(name)、发行时间(ReleaseDate)以及电影类型,数据的详细信息自己可以看去。


UpsetR 绘制集合可视化图形使用函数 upset()。

upset(movies, nsets = 6, number.angles = 30, point.size = 2, line.size = 1, mainbar.y.label = "Genre Intersections", sets.x.label = "Movies Per Genre", text.scale = c(1.3, 1.3, 1, 1, 1.5, 1))

【左右滑动查看完整信息】

c21cd63f-d1a7-4f84-aea3-a4417b49a444.png

解释一下上面部分参数:

  • nsets:顾名思义,就是展示几个集合,movies 数据集有 20 几个集合,这里只展示其中的6个,另外从图中可以看出,这 6 个集合应该不是按顺序选择的。

  • numble.angle:这个参数就是调整柱子上数字的角度的。

  • mainbar.y.label/sets.x.label:坐标轴名称。

  • text.scale():有六个数字,分别控制 c(intersection size title, intersection size tick labels, set size title, set size tick labels, set names, numbers above bars) 这 6 个字体的大小。


很多时候我们想要看特定的几个集合:

upset(movies, sets = c("Action", "Adventure", "Comedy", "Drama", "Mystery", "Thriller", "Romance", "War", "Western"), mb.ratio = c(0.55, 0.45), order.by = "freq")

【左右滑动查看完整信息】

cb8f433d-4d15-48b3-bb96-a37baee94a1f.png

参数解释:

  • mb.ratio:控制上方条形图以及下方点图的比例。

  • order.by:如何排序,这里 freq 表示从大到小排序展示,其他选项有 degree 以及先按 freq 再按 degree 排序。


通过 keep.order 参数来对各个变量进行排序:

upset(movies, sets = c("Action", "Adventure", "Comedy", "Drama", "Mystery", "Thriller", "Romance", "War", "Western"), mb.ratio = c(0.55, 0.45), order.by = "freq", keep.order = TRUE)

【左右滑动查看完整信息】

7ab549d9-9212-4e66-8a35-439048b203a0.png


也可以按 group 进行展示,下图展示的就是按各个变量自身、两个交集、三个交集......依次展示。参数 cutoff 控制每个 group 显示几个交集。参数 intersects 控制总共显示几个交集。

upset(movies, nintersects = 60, group.by = "sets", cutoff = 6)

【左右滑动查看完整信息】

a1ea12d6-141f-452d-bf66-2ba753c2812a.png

还有很多参数比如控制颜色的参数,点、线大小等,具体可通过 ?upset 或者 help(upset) 查看帮助信息。


下一篇文章,我们将会介绍一下 UpSetR 其他一些高级参数的用法。


本文分享自微信公众号 - 生信科技爱好者(bioitee)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
python数据分析:基于plotly的动态可视化绘图.pdf》是一本关于使用Python进行数据分析的书籍,主要介绍了如何利用plotly库进行动态可视化绘图数据分析是通过收集、清洗、加工、分析和呈现大量数据来揭示其中潜在规律和洞察的过程。而可视化则是将数据以图表等可视化方式展示,帮助我们更直观地理解和解读数据。plotly是Python中一款功能强大的可视化库,它可以生成各种交互式图表,支持动态可视化和在线展示。 《python数据分析:基于plotly的动态可视化绘图.pdf》通过实例演示了如何使用plotly库进行数据分析中常用的可视化操作,包括折线图、柱状图、散点图、饼图、地理图等。使用plotly库可以轻松创建动态可视化图表,通过调整参数和设置动画效果,可以让图表更生动、更具吸引力。 动态可视化是一种通过动态变化的图表来展示数据的方法。它可以帮助我们更好地理解数据的变化趋势和规律,发现数据中隐藏的特征和模式。在数据分析中,动态可视化常用于时间序列数据、实时数据等领域,能够直观地展示数据的变化过程和动态趋势。 综上所述,《python数据分析:基于plotly的动态可视化绘图.pdf》是一本介绍如何使用plotly库进行动态可视化绘图的书籍,通过实例演示了使用plotly库创建各种动态可视化图表的方法和技巧,对于对数据分析可视化有兴趣的人来说,是一本不可多得的学习资料。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值