交集展示——韦恩图与集合图

时间:2021-6-11 作者:qvyue

对于集合的可视化,第一时间想到的都是韦恩图(venn diagram),一般集合不超过5个的时候,可视化效果还是不错的;但是一旦数据集增加,比如说五个的时候,你就很难从图中解读出想要的信息了。即便你把它画的很美观,还是还是很难直观找到自己需要的信息。可视化的目的不是炫技,而是快速理解数据。
The R Graph Gallery
213维恩图和集合图(Venn&Upset)

目录

  1. Venn图
  2. UpSet图

一 、Venn图

VennDiagram 包
R语言:VennDiagram绘制venn图
venn.diagram rdocumentation

1.参数介绍

#加载包
install.packages("VennDiagram")
library(VennDiagram)
#数据准备
set1 
交集展示——韦恩图与集合图
venn.png
#图片保存
library(RColorBrewer)
######################图片暂存
p = venn.diagram(
  x = list(set1, set2, set3, set4, set5),
  category.names = c("Set 1" , "Set 2 " , "Set 3", "Set 4", "Set 5"),
  # filename = 'venn.png',
  filename = NULL,
  output=TRUE,

  fill = brewer.pal(5, "Set2"),
  col = brewer.pal(5, "Set3"),
  fontface = "bold",
  cat.col = brewer.pal(5, "Set3"),
  cat.fontface = "bold"
)
#################保存为PDF
pdf("venn1.pdf")
grid.draw(p)
dev.off()
#################保存为png
pdf("venn2.pdf")
grid.draw(p)
dev.off()

二、 UpSet图

1、 UpSetR包 UpSetR:集合可视化神包

参数介绍

upset(data, nsets = 5, nintersects = 40, sets = NULL,
keep.order = F, set.metadata = NULL, intersections = NULL,
matrix.color = “gray23”, main.bar.color = “gray23”,
mainbar.y.label = “Intersection Size”, mainbar.y.max = NULL,
sets.bar.color = “gray23”, sets.x.label = “Set Size”,
point.size = 2.2, line.size = 0.7, mb.ratio = c(0.7, 0.3),
expression = NULL, att.pos = NULL, att.color = main.bar.color,
order.by = c(“freq”, “degree”), decreasing = c(T, F),
show.numbers = “yes”, number.angles = 0, group.by = “degree”,
cutoff = NULL, queries = NULL, query.legend = “none”,
shade.color = “gray88”, shade.alpha = 0.25, matrix.dot.alpha = 0.5,
empty.intersections = NULL, color.pal = 1, boxplot.summary = NULL,
attribute.plots = NULL, scale.intersections = “identity”,
scale.sets = “identity”, text.scale = 1, set_size.angles = 0,
set_size.show = FALSE, set_size.numbers_size = NULL,
set_size.scale_max = NULL)

#########其中较为常用的参数介绍
nsets: 最多展示多少个集合数据。毕竟原来有20多种电影类型,放不完的
nintersects: 展示多少交集。
mb.ratio: 点点图和条形图的比例。
order.by: 交集如何排序。这里先根据freq,然后根据degree
decreasing: 变量如何排序。这里表示freq降序,degree升序

输入数据类型

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

  1. 表格形式,在R语言里就是数据框了。行表示元素,列表示数据集分配和额外信息。
  2. 元素名的集合(没见过,不知道。。)fromList
  3. venneuler包引入的用于描述集合交集的向量fromExpression。

第一种输入数据,表格型输入数据

install.packages("UpSetR")
require(ggplot2); require(plyr); require(gridExtra); require(grid);require(UpSetR)
movies 
交集展示——韦恩图与集合图
数据展示

可以看到这里的示例数据,行是要取交集的对象即电影名称,列是每个对象的具体信息(上映年份,动作片,恐怖片,爱情片等等),一般只有两个取值,1或0,是与否

交集展示——韦恩图与集合图
第一种输入数据.png

第二种输入数据,fromExpression对向量进行转化

input 
交集展示——韦恩图与集合图
向量经fromExpression转换后.png

可以看到,转换后的数据行名是每个对象,比如可以是基因,列名则是每个对象的具体情况,比如基因A在算法1,算法2,算法3中是否差异,是否富集等信息。

交集展示——韦恩图与集合图
第二种输入数据.png

进一步探究如何将年份这个变量加进这张图可以参考UpSetR:集合可视化神包

2、upsetplot包——Y叔 ChIPseeker的upsetplot是怎么写的

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。