在数据分析和可视化中,经常需要对某几组样本中共有或特有的基因,OTU或微生物进行可视化,通常可以选择维恩图进行可视化。但当分组信息过多,维恩图的展示能力及可读性则有所下降,因此推荐使用维恩图的升级版本—集合图(Upset plot)。
集合图主要由三部分组成
最上面的y轴以柱状图形式展示,用于表示交集大小,
下面左侧的x轴以条形图形式展示,表示每一个集合的大小,
下面右侧的矩阵点表明集合之间的交集情况,例如,若两个样本间有相同的元素,则使用连线将两个样本相连;同样地,若多个样本间存在连线,那这部分即为这几个样本内的共有元素。
下面让我们一起学习如何使用R语言绘制集合图。
示例数据(data1.csv)
数据为丰度/表达量矩阵,表格需要带表头和列名,每一列为样本名,每一行为各种指标数据名,如OTU,基因ID,代谢物名称等。
集合图绘制示例
# 读取本地数据并查看
dat <- read.csv("data1.csv", header = TRUE,row.names = 1,check.names = F)
head(dat)
# 加载R包
# install.packages("UpSetR")
library(UpSetR)
# 将丰度矩阵中的非0值转换为1
dat[dat > 0] <- 1
# 集合图绘制
# 基础绘图
upset(dat)
# 集合图美化
upset(dat,
nsets = 20, # 可视化数据集数量
nintersects= 60, # 显示前多少个交集
main.bar.color = 'blue', # 柱状图颜色
matrix.color="black", # 集合点的颜色
sets.bar.color= "red", # 条形图条形的颜色
set_size.show = F, # 是否在条形图上显示集合大小
mb.ratio = c(0.5, 0.5) # 矩阵图与主柱图之比
)
# 将条形图颜色设置为不同的颜色
# install.packages("RColorBrewer")
library(RColorBrewer)
upset(dat,
nsets = 20, # 可视化数据集数量
nintersects= 60, # 显示前多少个交集
main.bar.color = 'blue', # 柱状图颜色
matrix.color="black", # 集合点的颜色
sets.bar.color= c(brewer.pal(10,"Set3"),brewer.pal(10,"Paired")), # 条形图条形的颜色
set_size.show = F, # 是否在条形图上显示集合大小
mb.ratio = c(0.5, 0.5) # 矩阵图与主柱图之比
)
# 高亮显示特定交集
# queries参数用于指定要显示的特定组的交集,每个元素都包含一个query(查询类型)和params(查询参数)字段。在这个例子中,有两个查询:第一个查询指定"S1"和"S8"集合的交集,将其显示为红色;第二个查询指定"S15"集合,将其显示为绿色。color字段用于设置交集的颜色,active字段用于指定是否激活该查询
upset(dat, nsets = 20,mb.ratio = c(0.5, 0.5),
#设置自己想要展示的特定组的交集
queries=list(list(query=intersects, params=list("S1","S8"),
color="red",active=T),
list(query=intersects, params=list("S15"),
color="green",active=T))
)
(1)实用性强:课程精选的每个专题都是科研客户的热门需求;
(2)实战性强:每个专题,都有完整、专门的脚步和案例数据,在Windows系统、Mac系统、Linux系统,均可学习和操作;
(3)可移植性强:把案例数据替换成自己的实际项目数据,使用课程附带的脚本就可以运行获得结果;
(4)体系更系统:课程包含软件、软件包的各种安装方法,脚本的写作规则,数据统计方法和各类典型绘图方法,循序渐进,基本包括了处理高通量测序数据的主要分析模块,逻辑严谨且体系完善,更容易综合掌握R语言;
(5)上手更容易:课程既适合于零基础的入门学习者,也适合于具有一定基础的初级使用者,课程中结合着一个个的具体案例,拆解了R语言使用的各个重要知识点,并对结果做了解读分析,同时分享了很多经验,学习起来更友好,可以举一反三用于实践。
扫描下方二维码或根据链接获取课程
链接:https://college.mimazi.net/course/article-55.html