美文网首页RNA-seq
R-韦恩图系列-VennDiagram

R-韦恩图系列-VennDiagram

作者: 小贝学生信 | 来源:发表于2021-11-01 15:05 被阅读0次

R-韦恩图系列-ggVennDiagram - 简书 (jianshu.com)
R-韦恩图系列-VennDiagram - 简书 (jianshu.com)
R-韦恩图系列-UpSetR - 简书 (jianshu.com)

VennDiagram包是绘制韦恩图的一个经典包了。它不是基于ggplot体系,但可以通过转换变为ggplot对象(我更习惯些)。另外每次绘图时,但会生成一个日志log文件,比较麻烦。
参考教程:https://www.r-graph-gallery.com/14-venn-diagramm.html

  • 示例数据
# install.packages("VennDiagram")
library(VennDiagram)

genes <- paste0("gene",1:1000)
set.seed(20210302)
gene_list <- list(A = sample(genes,100),
                  B = sample(genes,200),
                  C = sample(genes,300),
                  D = sample(genes,200))
  • 简单用法:关键是设置filename参数,如果为正常名,则直接保存文件至本地;如果设置为NULL值,那么会得到gList图像,可配合grid.draw {grid}在R界面显示。但无论哪一种方法都会生成log文件。
#保存图片至本地
venn.diagram(gene_list, filename = "test.png")

#在R界面显示
venn.plot = venn.diagram(gene_list, 
                         filename = NULL)
grid.draw(venn.plot)
file.remove(list.files(pattern = "*log"))
dev.off()

1、类别名 category name

  • 相关参数如下:
category.names, #类别名内容
cat.cex = 0.6,  #类别名字体大小(相对1)
cat.fontface = "bold", #加粗
cat.col = rainbow(3)
cat.pos = c(-27, 27, 135),   #0度为12点方向,顺时针旋转
cat.dist = c(0.055, 0.055, 0.085), #类别名距离圆的距离
cat.fontfamily = "sans", #字体
rotation.degree = 60 #旋转角度(逆时针)
rotation = 1 #适合3 set的情况
  • 演示
venn.plot = venn.diagram(gene_list[1:3], filename = NULL,
                         category.names = LETTERS[1:3],
                         cat.cex = 1.5,
                         cat.fontface = "bold",
                         cat.pos = c(-20, 20, 180),
                         cat.col = rainbow(3))
grid.draw(venn.plot)
file.remove(list.files(pattern = "*log"))
dev.off()

2、圆的相关设置

  • 主要包括圆的填充颜色(离散),边的颜色、形状、粗细
fill  #填充颜色
col # 边的颜色
lwd = 2, #边的宽度
lty = 'blank', #边的类型 dashed dotted
  • 演示
library(RColorBrewer)
venn.plot = venn.diagram(gene_list, filename = NULL,
                         fill = brewer.pal(4, "Pastel2"),
                         col = brewer.pal(4, "Pastel2"),
                         lwd = 2, lty = "dashed")
grid.draw(venn.plot)
file.remove(list.files(pattern = "*log"))
dev.off()

如上图,我认为VennDiagramggVennDiagram包最大的不同就在于圆的填充颜色:前者为离散的颜色,而后者为连续渐变颜色(参看上一篇笔记)

3、交集数值展示的相关设置

venn.plot = venn.diagram(gene_list,
                         cex = 2,
                         fontface = "bold", 
                         filename = NULL)
grid.draw(venn.plot)
file.remove(list.files(pattern = "*log"))
dev.off()

4、特殊情况 2 sets

  • 如下图所示,当绘制两个set的交集情况时,圆的面积大小与对应数目成正比;
  • 而且当交集数目过小时,会自动使用引导线注释
gene_list2 <- list(A = sample(genes,20),
                  B = sample(genes,100))
venn.plot = venn.diagram(gene_list2,
                         filename = NULL)
grid.draw(venn.plot)
file.remove(list.files(pattern = "*log"))
dev.off()
  • 可通过ext.系列参数修改这根引导线格式,例如直接取消~
# ext.text = F
# ext.percent = 0 重叠数目低于多少百分比,使用线
# ext.pos
# ext.line.lwd
venn.plot = venn.diagram(gene_list2,
                         ext.text = F,
                         filename = NULL)
grid.draw(venn.plot)
file.remove(list.files(pattern = "*log"))
dev.off()
  • 当然,如果不想让圆的面积与数值存在这种对应关系,可通过如下方式进行绘制
venn.plot <- draw.pairwise.venn(
  area1 = 50,
  area2 = 50,
  cross.area = 20)
dev.off()

#修改展示标签内容
venn.plot[[5]]$label = length(setdiff(gene_list2[[1]], gene_list2[[2]]))
venn.plot[[6]]$label = length(setdiff(gene_list2[[2]], gene_list2[[1]]))
venn.plot[[7]]$label = length(intersect(gene_list2[[1]], gene_list2[[2]]))
grid.draw(venn.plot)
file.remove(list.files(pattern = "*log"))
dev.off()

5、转为ggplot2对象

library(ggplot2)
library(ggplotify)
library(cowplot)
as.ggplot(plot_grid(grobTree(venn.plot))) +
  ggtitle("This is title")

最后关于韦恩图的标题,venn.diagram函数的mainsub系列参数可以设置;另外由于可以转换为ggplot对象,所以之后使用ggplot title相关函数也可以~

相关文章

  • R-韦恩图系列-VennDiagram

    R-韦恩图系列-ggVennDiagram - 简书 (jianshu.com)[https://www.jian...

  • R语言可视化(九):韦恩图绘制

    09.韦恩图绘制 清除当前环境中的变量 设置工作目录 gplots包绘制韦恩图 VennDiagram包绘制韦恩图...

  • 使用VennDiagram包绘制韦恩图

    使用VennDiagram包绘制韦恩图 加载所需R包 绘制一维韦恩图 绘制二维韦恩图 绘制三维韦恩图 绘制四维韦恩...

  • 韦恩图(Venn)

    分享在线绘制韦恩图网站: 使用R包(VennDiagram)绘制韦恩图 参考链接:https://www.jian...

  • 科研绘图——韦恩图

    构建数据 使用ggVennDiagram绘制韦恩图 比较经典的韦恩图是使用venndiagram作图,但是缺点是不...

  • R 画韦恩图

    调用包 VennDiagram 两个集的韦恩图 四个集的韦恩图 venn.diagram()画韦恩图 当前路径下生...

  • R-韦恩图系列-ggVennDiagram

    R-韦恩图系列-ggVennDiagram - 简书 (jianshu.com)[https://www.jian...

  • R-韦恩图系列-UpSetR

    R-韦恩图系列-ggVennDiagram - 简书 (jianshu.com)[https://www.jian...

  • VennDiagram绘制韦恩图

    参考自简书:https://www.jianshu.com/p/285b4ac66768里面分别讲到了1-5重韦恩...

  • VennDiagram绘制韦恩图

    年后开工第二天,忘了开机密码不说,甚至忘记了自己先前是干什么工作的。哎~~~~依旧在暴躁中。。。。只能通过整理之前...

网友评论

    本文标题:R-韦恩图系列-VennDiagram

    本文链接:https://www.haomeiwen.com/subject/yzszaltx.html