R绘制Venn图及其变换

我自己在用R做各种分析时有不少需要反复用到的基础功能,比如一些简单的统计呀,画一些简单的图等等,虽说具体实现的代码也不麻烦,但还是不太想每次用的时候去找之前的代码。

索性将常用的各种函数整成了一个包:pcutils,
网址:https://github.com/Asa12138/pcutils

从CRAN安装:

install.packages("pcutils")

但目前还是建议从github安装,包含的功能会多一些:

install.packages("devtools")
devtools::install_github('Asa12138/pcutils',dependencies=T)

Introduction

Venn图是一种比较常用的可视化方法,它可以用来展示多个集合的交集、并集、差集等信息。

Venn图的基本思想是,将多个集合分成不同的区域,并用不同的颜色填充这些区域,从而展示出不同集合之间的关系。Venn图的变种有很多,比如花瓣图、Upset图、Venn网络图等,但它们想要展示的信息都是类似的。

做这一类Venn图的在线网站有很多,我最推荐的是EVenn:http://www.ehbio.com/test/venn/#/,使用方便,种类多样:

但有时候我们还是想自己用R来绘制Venn图,下面介绍一下pcutils 包中的venn函数。

venn

vennpcutils 包中提供的绘制Venn图的函数,它可以绘制多种类型的Venn图。

输入数据也十分统一,可以是一个list如list(a = 1:3, b = 3:7, c = 2:4),也可以是一个dataframe,其中每一列代表一个集合,每一行代表一个feature,如果值为0说明该集合不含该feature,大于0说明含有该feature。

标准Venn图

标准Venn图通常用于比较两到六组实验数据,使用颜色编码元素来表示unique和common的组件。

绘制标准Venn图的R包非常多,比如ggvenn,ggVennDiagram,Vennerable等,我这里内置的是ggVennDiagram的函数来绘制,可以使用ggplot的逻辑来方便修改:

aa <- list(a = 1:3, b = 3:7, c = 2:4, d=7:8)
p1=venn(aa[1:3], mode = "venn")
p2=venn(aa, mode = "venn")+viridis::scale_fill_viridis()
p1+p2

Euler图

Euler图在可行的情况下会省略空的交叉区域,从而提高了多个集合的可视化的精度和具体性。Euler图专门为两组和三组实验数据而设计,可生成面积比例表示,其中交叉区域的大小与共享元素的数量相关。此功能可以清晰地描述集合之间的部分包含、完全包含和完全排除关系。

我这里内置的是eulerr包的函数来绘制:

venn(aa, mode = "euler")

Upset图

UpSet 图是一种创新的可视化技术,专为集合交集的定量分析而设计,可容纳 3 到 几十组的复杂数据集。

通过两种呈现模式,它可以熟练地可视化非空交叉点和空交叉点。该图由三个关键部分组成:水平条形图描绘每个集合中的总元素,垂直条形图指示相应交叉点中的元素,以及带有连接点的矩阵,描绘集合之间的所有交叉点类型。

我这里内置的是UpSetR包的函数:

venn(aa, mode = "upset")

花瓣图

当处理超过10组的综合数据集时,维恩图、欧拉图、UpSet图等传统可视化方法会遇到局限性。花瓣图是平衡可解释性和信息丰富性的方法,只展示所有集合共有的部分和每个集合特有的部分,省略了两两之间的关系,因为实在太多了。

我这里使用plotrix包手动来绘制中心的圆和周围的椭圆花瓣:

data(otutab)
venn(otutab, mode = "flower")

Venn网络图

维恩网络超越了标准维恩图的常规边界,超越了相交和共有的描述。它通过将每个集合指定为父节点并通过边缘将单个元素连接到其各自的父节点,从而巧妙地说明了集合中的关系。

这里基于我的另一个包MetaNet来绘制网络,不同的数据类型会影响所得的网络结构:

filter_df=otutab[sample(300:500,50),1:3]
venn(filter_df, mode = "network")

所有的可视化方法都是为展示数据服务的,
我整合这些函数也是希望可以更关注数据本身,花更少的精力在调节图形上,先快速对我们的数据有整体的把握。

pcutils的初衷还是迎合我自己的编程与数据分析习惯的,所以可能并不适合所有人,大家也可以直接fork并修改我的源码,欢迎大家提出建议与意见。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/802723.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深度刨析程序中的指针

前面我们已经学习过了指针的一下性质&#xff1a; 指针就是个变量&#xff0c;用来存放地址&#xff0c;地址唯一标识的一块内存空间指针的大小是固定的4/8个字节&#xff08;32位平台/64位平台&#xff09;指针是有类型&#xff0c;指针的类型决定了指针的加减整数的步长&…

Pr 2024下载安装,Adobe Premiere pro2024剪辑软件下载合集获取

Premiere Pro 2023中文版简称Pr&#xff0c;pr2023是一款视频编辑软件。 pr 2023不仅可以帮助用户对各种视频进行剪辑、旋转、分割、合并、字幕添加、背景音乐等基础的处理&#xff0c;还能帮助用户进行视频颜色校正、颜色分级、稳定镜头、调整层、更改片段的持续时间和速度、效…

进程通信(3): System V IPC

System IPC包括System V消息队列&#xff0c;System V信号量&#xff0c;System V共享内存区。 System V IPC使用一个key&#xff08;key_t&#xff09;作为他们名字&#xff0c;这个值由ftok函数通过路径名和一个id生成。 客户和服务器通过在路径名和id达成一致&#xff0c;双…

SpringCloud教程 | 第十篇: 读取Nacos的配置(失败情况2)

参考&#xff1a;SpringCloud搭建Nacos配置中心_springcloud nacos maven-CSDN博客 解决了pom.xml的依赖冲突后&#xff0c;在启动服务时&#xff0c;报错了&#xff0c;并且自动停止了。 2024-07-17 11:13:03.597 ERROR [com.alibaba.nacos.client.remote.worker] com.alibab…

在 Windows 平台搭建 MQTT 服务

一、引言 出于稳定性、可靠性、成本等多方面的考虑&#xff0c;众多 MQTT 服务实现更倾向于选择拥有丰富开源生态系统的 Linux 环境&#xff0c;Windows 平台上可选的 MQTT 服务相对有限。NanoMQ 是用于物联网边缘的超轻量级 MQTT 消息服务器&#xff0c;有着强大的跨平台和可…

超详细信息收集篇

1 域名信息收集 1.1 域名是什么 域名&#xff08;英语&#xff1a;Domain Name&#xff09;&#xff0c;又称网域&#xff0c;是由一串用点分隔的名字组成的 Internet 上某一台 计算机 或计算机组的名称&#xff0c;用于在数据传输时对计算机的定位标识&#xff08;有时也指地…

监控系统怎样做?

监控类型自底向上分为资源监控、服务监控和业务监控。希望打造公司级的监控系统最好的时机是系统规划时&#xff0c;如果把监控设计往后放&#xff0c;将会面临一个巨大的难题&#xff1a;推行和现有不兼容的规范。 三种监控类型 资源监控 这个相对简单&#xff0c;随着k8s的兴…

【深度学习】BeautyGAN: 美妆,化妆,人脸美妆

https://www.sysu-hcp.net/userfiles/files/2021/03/01/3327b564380f20c9.pdf 【深度学习】BeautyGAN: Instance-level Facial Makeup Transfer with Deep Generative Adversarial Network BeautyGAN: Instance-level Facial Makeup Transfer with Deep Generative Adversaria…

嵌入式物联网在教育行业的应用——案例分析

作者主页: 知孤云出岫 嵌入式物联网在教育行业的应用——案例分析 目录 作者主页:嵌入式物联网在教育行业的应用——案例分析一、引言二、智能教室&#xff1a;环境监测系统1. 硬件需求2. 电路连接3. 代码实现 三、个性化学习&#xff1a;智能学习平台1. 数据处理与分析2. 代…

下载仓颉sdk安装时遇到“无法运行”问题

图1. 社区地址&#xff1a;GitCode - 全球开发者的开源社区,开源代码托管平台 在GitCode社区中下载Cangjie-0.53.4-windows_x64的sdk后&#xff0c;双击安装时遇到“此应用无法在你的电脑上运行的问题” 经过反复排查后&#xff0c;确定是sdk直接下载有问题&#xff1b;‘需要…

Android Studio 汉化

下载地址&#xff1a;https://plugins.jetbrains.com/plugin/13710-chinese-simplified-language-pack----/versions/stable 下载完zpi包之后&#xff0c;进入&#xff1a;设置 -> 插件 导入即可。 注&#xff1a; 汉化包需要与 Android Studio 版本对应。

Matlab|基于蒙特卡洛法的电动汽车充电负荷计算

目录 1 主要内容 2 部分代码 3 程序结果 4 下载链接 1 主要内容 该程序方法复现《V2G 模式下含分布式能源的配电网优化运行研究》第二章电动汽车无序充电模型&#xff0c;按照文章《V2G 模式下基于复杂网络的电动汽车有序充电策略》分析思路研究了不同数量电动汽车接入情况…

Jetpack Compose学习记录(一)

目录 前言控件实时预览Modifierremember状态提升 前言 学了一段时间的Compose&#xff0c;不得不说声明式UI比原生的开发效率快很多&#xff0c;而且Compose也是Google现在主推的开发模式&#xff0c;可以动态化地更改ui&#xff0c;相比于databinding对数据和布局进行绑定。C…

FreeCAD源码分析:Serialization

序列化(Serialization)是在程序运行时将对象转换成字节流的过程&#xff0c;进而将二进制字节流罗盘到文件系统或者通过网络发送到远端。而反序列化(Deserialization)则恰恰相反&#xff0c;是由二进制字节流重新构建对象的过程。 Ref. from Boost Serialization Here, we use …

电子标书怎么盖章?

电子标书怎么盖章&#xff1f;下面是利用e-章宝&#xff08;##### 与在线盖章的平台不同&#xff0c;专业的盖章软件在盖章时无需要上传你的文档&#xff0c;甚至在无网络下都可以使用&#xff0c;且保密性非常强&#xff0c;如e-章宝。如果你的文件保密性强&#xff0c;用网上…

CSS综合案例(快报模块头部制作)

&#xff08;大家好&#xff0c;今天我们将继续来学习CSS的相关知识&#xff0c;大家可以在评论区进行互动答疑哦~加油&#xff01;&#x1f495;&#xff09; 目录 一、前述 二、案例分析 1.样例参看 2.拆分分析 三、案例实施 一、前述 案例&#xff1a;快报模块头部制…

open3d:随机采样一致性分割平面

1、背景介绍 随机采样一致性算法&#xff08;RANSAC Random Sample Consensus&#xff09;是一种迭代的参数估计算法&#xff0c;主要用于从包含大量噪声数据的样本中估计模型参数。其核心思想是通过随机采样和模型验证来找到数据中最符合模型假设的点。因此&#xff0c;只要事…

spring框架(ioc控制反转 aop面向切面编程)

目录 服务端三层开发&#xff1a; spring框架&#xff08;ioc控制反转 aop面向切面编程&#xff09; 1、Spring框架的优点 什么是事物&#xff1f; 2、Spring的IOC核心技术 什么是ioc&#xff1f; 代码举例&#xff1a;&#xff08;详细流程见笔记&#xff09; **applic…

NSSCTF-Web题目26(PHP弱比较)

目录 [SWPUCTF 2022 新生赛]funny_php 1、题目 2、知识点 3、思路 [ASIS 2019]Unicorn shop 4、题目 5、知识点 6、思路 [SWPUCTF 2022 新生赛]funny_php 1、题目 2、知识点 弱比较、双写绕过 3、思路 出现源代码&#xff0c;我们进行审计 第一个if 这里要我们GET方…

AI PC创造新商机,ISP与HPD集成单芯片方案受欢迎

今年以来&#xff0c;AI PC逐渐成为市场的焦点&#xff0c;因为AI PC给多年一成不变的PC市场带来了新的看点&#xff0c;也给了消费者升级的理由。今年是AI PC的元年&#xff0c;上半年不论是芯片厂商&#xff0c;还是PC厂商都在AI PC市场快速布局。AI PC相关的大模型、生态&am…