热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

R语言画维恩图–VennDiagram

R语言中有很多程序包(package)可以做这个事情,包括limma,gplots,venneuler,还有今天我们下面要介绍的VennDiagram包。各个工具用起来差别不是很大,可

R语言中有很多程序包(package)可以做这个事情,包括limma, gplots, venneuler, 还有今天我们下面要介绍的VennDiagram包。各个工具用起来差别不是很大,可以根据个人喜好选择,不过其中limma包只能展示最多三个数据集的关系,后面三个包都可以展示超过三个数据集的维恩图。

1. 安装并加载包VennDiagram

> install.packages("VennDiagram")
> library(grid)
> library(VennDiagram)

2. 画维恩图的函数–venn.diagram()

VennDiagram包中画维恩图的函数是venn.diagram(). 下面我们来看一下venn.diagram()函数的使用及参数说明。

> venn.diagram(x, filename, height = 3000, width = 3000, resolution =
    500, imagetype = "tiff", units = "px", compression =
    "lzw", na = "stop", main = NULL, sub = NULL, main.pos
    = c(0.5, 1.05), main.fOntface= "plain",
    main.fOntfamily= "serif", main.col = "black",
    main.cex = 1, main.just = c(0.5, 1), sub.pos = c(0.5,
    1.05), sub.fOntface= "plain", sub.fOntfamily=
    "serif", sub.col = "black", sub.cex = 1, sub.just =
    c(0.5, 1), category.names = names(x), force.unique =
    TRUE, print.mode = "raw", sigdigs = 3, direct.area =
    FALSE, area.vector = 0, hyper.test = FALSE, total.population = NULL, 
    lower.tail = TRUE, ...)

部分参数说明:

x: a list of vectors, e.g: list(A=1:10, B=3:8, C=5:13)
filename: 设置图形输出文件名
resolution: 输出图形的清晰度,DPI数值
imagetype: 输出图形的格式,tiff, png, svg 等
alpha: 设置每个区块的透明度
main: 图形标题
main.fontface: 字体样式,比如斜体,粗体等
main.fontfamily: 字体,比如Time New Roman等
关于调解文字的,不仅可以针对标题调节,还有参数分别针对子标题,维恩图中每个部分(类别)的名字进行字体,大小,和字体样式的设置。

更多关于venn.diagram函数的参数说明可以查看其详细文档
venn.diagram官网: Make a Venn Diagram in VennDiagram: Generate High-Resolution Venn and Euler Plots (rdrr.io)

sample(x, size, replace=F) # 不放回抽样

二、venn基础图

1 两个圈

venn.diagram(
  x = list(set1, set2),
  category.names = c("Set 1" , "Set 2 "),
  filename = 'venn.png',
  output=TRUE
)

R语言画维恩图--VennDiagram
image

2 三个圈

venn.diagram(
  x = list(set1, set2, set3),
  category.names = c("Set 1" , "Set 2 " , "Set 3"),
  filename = 'venn.png',
  output=TRUE
)

R语言画维恩图--VennDiagram
image

3 四个圈

venn.diagram(
  x = list(set1, set2, set3, set4),
  category.names = c("Set 1" , "Set 2 " , "Set 3", "Set 4"),
  filename = 'venn.png',
  output=TRUE
)

R语言画维恩图--VennDiagram
image

4 五个圈

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',
  output=TRUE
)

R语言画维恩图--VennDiagram
image
三、个性化参数调整
#调整参数进行图形优化

venn.plot 
library(RColorBrewer)
color 
R语言画维恩图--VennDiagram
image
四、保存

1 绘图待保存

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"
)

2 保存为PDF

pdf("venn-pdf.pdf")
grid.draw(p)
dev.off()

R语言画维恩图--VennDiagram
image

3 保存为PNG

png("venn-png.png")
grid.draw(p)
dev.off()

R语言画维恩图--VennDiagram
image

更多参数:

col = NA  # 边框设为无色

参考:https://www.r-graph-gallery.com/14-venn-diagramm.html
venn网页工具:http://bioinformatics.psb.ugent.be/webtools/Venn/
venn.diagram函数文档: https://www.rdocumentation.org/packages/VennDiagram/versions/1.6.20/topics/venn.diagram
The R Graph Gallery绘图教程:https://www.r-graph-gallery.com/index.html
如何使用R来绘制韦恩图(Venn Diagram) – 云+社区 – 腾讯云 (tencent.com)


推荐阅读
  • 探讨了在HTML表单中使用元素代替进行表单提交的方法。 ... [详细]
  • 本文提供了处理WordPress网站中出现过多重定向问题的方法,包括检查DNS配置、安装SSL证书以及解决数据库连接错误等步骤。 ... [详细]
  • 本文详细介绍了如何在 Ubuntu 14.04 系统上搭建仅使用 CPU 的 Caffe 深度学习框架,包括环境准备、依赖安装及编译过程。 ... [详细]
  • JavaScript 跨域解决方案详解
    本文详细介绍了JavaScript在不同域之间进行数据传输或通信的技术,包括使用JSONP、修改document.domain、利用window.name以及HTML5的postMessage方法等跨域解决方案。 ... [详细]
  • 尽管在WPF中工作了一段时间,但在菜单控件的样式设置上遇到了一些基础问题,特别是关于如何正确配置前景色和背景色。 ... [详细]
  • 本文详细介绍如何在 Apache 中设置虚拟主机,包括基本配置和高级设置,帮助用户更好地理解和使用虚拟主机功能。 ... [详细]
  • 本文探讨了使用普通生成函数和指数生成函数解决组合与排列问题的方法,特别是在处理特定路径计数问题时的应用。文章通过详细分析和代码实现,展示了如何高效地计算在给定条件下不相邻相同元素的排列数量。 ... [详细]
  • 本文探讨了使用lightopenid库实现网站登录,并在用户成功登录后,如何获取其姓名、电子邮件及出生日期等详细信息的方法。特别针对Google OpenID进行了说明。 ... [详细]
  • Android 中的布局方式之线性布局
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 为何Compose与Swarm之后仍有Kubernetes的诞生?
    探讨在已有Compose和Swarm的情况下,Kubernetes是如何以其独特的设计理念和技术优势脱颖而出,成为容器编排领域的领航者。 ... [详细]
  • WPF MVVM: 动态添加控件与数据绑定的最佳实践
    本文介绍如何在WPF应用程序中使用MVVM模式动态添加控件并进行数据绑定。通过示例展示如何创建一个虚拟键盘,其中包含多个按键。 ... [详细]
  • 编写SharePoint的EventReceiver需要用到ListTemplateID来进行绑定,下面的列表对于编程和排查错误都是个很好的索引.Listtem ... [详细]
  • Zabbix自定义监控与邮件告警配置实践
    本文详细介绍了如何在Zabbix中添加自定义监控项目,配置邮件告警功能,并解决测试告警时遇到的邮件不发送问题。 ... [详细]
  • 本文将深入探讨 Unreal Engine 4 (UE4) 中的距离场技术,包括其原理、实现细节以及在渲染中的应用。距离场技术在现代游戏引擎中用于提高光照和阴影的效果,尤其是在处理复杂几何形状时。文章将结合具体代码示例,帮助读者更好地理解和应用这一技术。 ... [详细]
  • WPF项目学习.一
    WPF项目搭建版权声明:本文为博主初学经验,未经博主允许不得转载。一、前言记录在学习与制作WPF过程中遇到的解决方案。使用MVVM的优点是数据和视图分离,双向绑定,低耦合,可重用行 ... [详细]
author-avatar
懂我的何必解释
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有