R语言数据可视化-Upset图

2024-06-08 1201阅读

我要给你安利一个R语言绘图的超实用干货——集合可视化的神器:UpSetR包!🌟

它能够优雅地处理集合间的交集、并集,让数据的对比和关系一目了然。🎨告别那些让人眼花缭乱的传统图表,用UpSetR包让你的数据图形简洁又美观,还能轻松展示出更多的信息。✨

🚀 特点速览:

1️⃣ 直观展示集合关系

2️⃣ 动态交互,探索数据更深入

3️⃣ 自定义设置,满足你的个性化需求

4️⃣ 一键导出,分享你的发现

🔬 数据分析,不再只是数字游戏,让我们一起用UpSetR包,把数据变成故事,讲述属于你的见解。📚

关于不同集合之间的交集关系,相信大家都常见到。

而最常用于了解交集的图表应该就是文氏图(Venn diagram)【往期文章:文氏图_1; 文氏图_2】,可是一旦集合数超过4个以上,文氏图解读起来就没那么轻松了。因为3个集之间的可能交集只有8种,但如果是10个集,它们之间的可能交集高达1024种(即 2n )![1]。

此时就可以考虑使用UpSet plots[2]。

今天介绍一个发表在《Bioinformatics》上的R包{UpSetR}[3-4],轻松处理3个以上集合的交集关系。

首先,安装R包并且载入:

install.packages("UpSetR")
library(UpSetR)

UpSet图是一种用于展示不同组之间共有和特有部分的可视化方式,它是韦恩图的另一种替代方式。UpSet图可以用于展示3-7组(目前设置最大的是7组)之间的共有和独有的情况。UpSet图主要包含三个部分:上部分为各个分组独有和共有的数量,下部分为各个分组独有和共有的分类情况,左部分(或者右部分)代表各个分组中包含的没有重复的元素数量。每一列都是一个分组,而每一行则代表一个元素。

在UpSet图中,可以通过柱状图和点的结合来展示各个分组之间的交集情况。柱状图的高度表示某个分组中独有或共有的元素数量,而点则用于表示元素在各个分组中的分布情况。通过点的位置和连接关系,可以直观地看出各个分组之间的交集情况。

在R中,可以使用UpSetR包来绘制UpSet图。UpSet图的优势在于它可以展示多个分组之间的交集情况,并且可以直观地比较各个分组之间的差异和相似之处。此外,UpSet图还可以通过排序和筛选等功能来进一步优化可视化效果。

论文

A highly conserved core bacterial microbiota with nitrogen-fixation capacity inhabits the xylem sap in maize plants

https://www.nature.com/articles/s41467-022-31113-w

本地pdf s41467-022-31113-w.pdf

用到的是UpSetR包:https://github.com/hms-dbmi/UpSetR。 upset

参数:

nsets: 最多展示多少个集合数据。

nintersects: 展示多少交集。

mb.ratio: 点点图和条形图的比例。

order.by: 交集如何排序。这里先根据freq,然后根据degree

decreasing: 变量如何排序。这里表示freq降序,degree升序

使用的是自带的Demo数据,name是的电影名,第二列是电影的发布时间,后面跟着十几个电影类型,最后两列是average rating以及观看数量,这里需要注意的是upset绘图选取的列只使用二进制列(仅包含 0 和 1)和逻辑列,这里也就是电影类型。

图形解读:黑色表示该位置有数据,灰色的点表示没有。不同点连线表示存在交集。具体数据可以看上面的条形图。不同类型的数据的总量看左边的条形图。

install.packages("UpSetR")
library(UpSetR)
library(ggplot2)
library(plyr) 
library(gridExtra)
library(grid)
movies     inputFile=files[i]if(inputFile==outFile){next}    rt=read.table(inputFile,header=F)           读取输入文件    geneNames=as.vector(rt[,1])               提取基因名称    geneNames=gsub("^ | $","",geneNames)     去掉基因首尾的空格    uniqGene=unique(geneNames)             基因取unique,唯一基因列表    header=unlist(strsplit(inputFile,"\\.|\\-"))    geneList[[header[1]]]=uniqGene    uniqLength=length(uniqGene)    print(paste(header[1],uniqLength,sep=" "))}
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]