【R语言】——UpSetR包绘制集合图(保姆级教程)

本期介绍利用UpsetR包大于5个样本的“维恩图”,即集合图

     上期“【R语言】——VennDiagram包绘制维恩图(Venn diagram)保姆级教程”介绍2-5个样本绘制维恩图的方法,但当样本超过5个时,常规维恩图可视化结果的直观性及数据的捕捉就很困难,甚是不友好。因此,可采用一种特殊的“维恩图”——集合图(upset plot)。

    集合图(upset plot),集合图不受样本数量的限制。可以更直观的显示各组数据之间的交互情况。可以更清晰的展示多个数据集的交集情况。

下图为集合图的说明:

1 数据准备

数据输入格式(xlsx格式):

2 R包加载及数据导入

#下载包#

install.packages("UpSetR")

install.packages("RColorBrewer")

install.packages("openxlsx")

#载入包#

library(UpSetR)

library(openxlsx)

library(RColorBrewer)

#读取数据#

data<-read.xlsx('C:/Rdata/jc/Venn.xlsx',sheet= "Sheet7",sep=',')

head(data)

3  集合图绘制

upset(fromList(data))#基础图

图1 集合图基础图

#调整与美化后的集合图#

upset(fromList(data),      

      nsets=length(data),#显示数据集的所有数据,nsets = 数值调整可视化数据集数量

      nintersects=30,#显示前多少个

      sets=c("set1","set2","set3","set4","set5","set6"), # 指定集合或用keep.order = TRUE保持集合按输入的顺序排序

      number.angles = 0, #交互集合柱状图的柱标倾角

      point.size=4, #图中点的大小

      line.size=1, #图中连接线粗细

      mainbar.y.label="Intersection size", #y轴的标签

      main.bar.color = 'black', #y轴柱状图颜色

      matrix.color="black", #x轴点的颜色

      sets.x.label="Set size",   #x轴的标签

      sets.bar.color=brewer.pal(6,"Set1"),#x轴柱状图的颜色;Set1中只有9个颜色,Set3中有12个颜色,Paired中有12个颜色

      mb.ratio = c(0.7, 0.3), #bar plot和matrix plot图形高度的占比

      order.by = "freq", #y轴矩阵排序,如"freq"频率,"degree"程度

      text.scale=c(1.5,1.5,1.5,1.5,1.5,1), #6个参数intersection size title(y标题大小),intersection size tick labels(y刻度标签大小), set size title(set标题大小), set size tick labels(set刻度标签大小), set names(set 分类标签大小), numbers above bars(柱数字大小)的设置

      shade.color="red" #图中阴影部分的颜色

      )

 图2 调整与美化后的集合图

#高亮显示特定几个集合的交集

upset(fromList(data),      

      nsets=length(data),#显示数据集的所有数据,nsets = 数值调整可视化数据集数量

      nintersects=30,#显示前多少个

      sets=c("set1","set2","set3","set4","set5","set6"), # 指定集合或用keep.order = TRUE保持集合按输入的顺序排序

      number.angles = 0, #交互集合柱状图的柱标倾角

      point.size=4, #图中点的大小

      line.size=1, #图中连接线粗细

      mainbar.y.label="Intersection size", #y轴的标签

      main.bar.color = 'black', #y轴柱状图颜色

      matrix.color="black", #x轴点的颜色

      sets.x.label="Set size",   #x轴的标签

      sets.bar.color=brewer.pal(6,"Set1"),#x轴柱状图的颜色;Set1中只有9个颜色,Set3中有12个颜色,Paired中有12个颜色

      mb.ratio = c(0.7, 0.3), #bar plot和matrix plot图形高度的占比

      order.by = "freq", #y轴矩阵排序,如"freq"频率,"degree"程度

      text.scale=c(1.5,1.5,1.5,1.5,1.5,1), #6个参数intersection size title(y标题大小),intersection size tick labels(y刻度标签大小), set size title(set标题大小), set size tick labels(set刻度标签大小), set names(set 分类标签大小), numbers above bars(柱数字大小)的设置

      shade.color="red", #图中阴影部分的颜色

      queries=list(list(query=intersects,params=list("set1","set2"),color="red",active=T),#设置自己想要展示的特定组的交集,通过queries参数进行设置,需要展示几个关注组合的颜色,就展示几个

                   list(query=intersects,params=list("set2","set3"),color="blue",active=T),

                   list(query=intersects,params=list("set6","set5"),color="green",active=T),

                   list(query=intersects,params=list("set4","set6","set1"),color="yellow",active=T),

                   list(query=intersects,params=list("set4","set5","set6"),color="purple",active=T),

                   list(query=intersects,params=list("set4","set5","set3"),color="orange",active=T) )

      )

图3 高亮特定交集

#总结#

upset(fromList(data),      

      nsets=length(data),#显示数据集的所有数据,nsets = 数值调整可视化数据集数量

      nintersects=30,#显示前多少个

      sets=c("set1","set2","set3","set4","set5","set6"), # 指定集合或用keep.order = TRUE保持集合按输入的顺序排序

      number.angles = 0, #交互集合柱状图的柱标倾角

      point.size=4, #图中点的大小

      line.size=1, #图中连接线粗细

      mainbar.y.label="Intersection size", #y轴的标签

      main.bar.color = 'black', #y轴柱状图颜色

      matrix.color="black", #x轴点的颜色

      sets.x.label="Set size",   #x轴的标签

      sets.bar.color=brewer.pal(6,"Set1"),#x轴柱状图的颜色;Set1中只有9个颜色,Set3中有12个颜色,Paired中有12个颜色

      mb.ratio = c(0.7, 0.3), #bar plot和matrix plot图形高度的占比

      order.by = "freq", #y轴矩阵排序,如"freq"频率,"degree"程度

      decreasing = c(T,F), #以上排序是否降序c(FALSE,TRUE)

      text.scale=c(1.5,1.5,1.5,1.5,1.5,1), #6个参数intersection size title(y标题大小),intersection size tick labels(y刻度标签大小), set size title(set标题大小), set size tick labels(set刻度标签大小), set names(set 分类标签大小), numbers above bars(柱数字大小)的设置

      shade.color="red", #图中阴影部分的颜色

      boxplot.summary = c('set2','set3'), #添加箱线图展示数据分布,最多展示两个数据集

      queries=list(list(query=intersects,params=list("set1","set2"),color="red",active=T),#设置自己想要展示的特定组的交集,通过queries参数进行设置,需要展示几个关注组合的颜色,就展示几个

                   list(query=intersects,params=list("set2","set3"),color="blue",active=T),

                   list(query=intersects,params=list("set6","set5"),color="green",active=T),

                   list(query=intersects,params=list("set4","set6","set1"),color="yellow",active=T),

                   list(query=intersects,params=list("set4","set5","set6"),color="purple",active=T),

                   list(query=intersects,params=list("set4","set5","set3"),color="orange",active=T) )

      )

好了本次分享就到这里。

关注公众号,发送“核估计密度图”获得完整代码

猜你喜欢

转载自blog.csdn.net/weixin_54004950/article/details/128358279