upset 绘制
好久没有更新,今天来一个upset图的绘制
1.1 安装包
#绘制upset的包现在看来有三个
## UpSet
### 最基本的upsetR包,使用方便,但是扩展不方便
devtools::install_github("hms-dbmi/UpSetR")
## complex-upset
### UpSet的升级款 支持ggplot2
devtools::install_github('krassowski/complex-upset')
## ggupset
### 同样是UpSet的升级款 支持ggplot2
devtools::install_github("const-ae/ggupset")
示例数据
library(ggplot2)
library(ggupset)
library(ComplexUpset)
test.list <- list(set1 = c("a", "b", "c"),set2 = c("b", "c", "d", "e"),set3 = c("c", "d", "e", "f")
)
UpSetR
#对于list,利用fromlist()整理数据
UpSetR::upset(fromList(test.list), order.by = "degree", #还可以选择"degree")

ComplexUpset
# 要求输入的是矩阵,如果数据是list,用formlist()转化一下就可以
test.df <- fromList(test.list)
ComplexUpset::upset(test.df,intersect = colnames(test.df))
# 与UpSetR不同的是支持ggplot2语法, 例如
ComplexUpset::upset(test.df, intersect = colnames(test.df), wrap= TRUE) + ggtitle("This is a title")


ggupset
# 同样是支持ggplot2语法, 但是输入会更加复杂一些
# 主要是通过scale_x_upset()来控制upset的输出, 例如
test.df <- fromList(test.list) %>% apply(2, as.logical) %>% t() %>% as.tibble(rownames = "setsnames") %>% pivot_longer(cols = -setsnames, names_to = "Sets", values_to = "stat") %>% filter(stat) %>% select(-stat) %>% group_by(Sets) %>% summarize(Set = list(setsnames))
> test.df
# A tibble: 6 × 2Sets Set <chr> <list>
1 V1 <chr [1]>
2 V2 <chr [2]>
3 V3 <chr [3]>
4 V4 <chr [2]>
5 V5 <chr [2]>
6 V6 <chr [1]>
> str(test.df)
tibble [6 × 2] (S3: tbl_df/tbl/data.frame)$ Sets: chr [1:6] "V1" "V2" "V3" "V4" ...$ Set :List of 6..$ : chr "set1"..$ : chr [1:2] "set1" "set2"..$ : chr [1:3] "set1" "set2" "set3"..$ : chr [1:2] "set2" "set3"..$ : chr [1:2] "set2" "set3"..$ : chr "set3"test.df %>% ggplot(aes(x = Set)) +geom_bar() +scale_x_upset(order_by = "degree",reverse = T, )

# 然后利用 ggplot2 增加亿点细节
test.df %>% ggplot(aes(x = Set)) +geom_bar() +scale_x_upset(order_by = "degree",reverse = T, )+geom_text(stat='count', aes(label=after_stat(count)), vjust=-1) + scale_y_continuous(name = "Intersection size",expand = c(0, 0), limits = c(0, 6))+theme(text = element_text(family = "ARIAL", colour = "black", size = 9))+xlab('')+theme_combmatrix(combmatrix.label.make_space = TRUE, combmatrix.label.width = NULL, combmatrix.label.height = NULL, combmatrix.label.extra_spacing = 3, combmatrix.label.total_extra_spacing = unit(10, "pt"), combmatrix.label.text = element_text(family = "ARIAL", colour = "Pink", size = 9), combmatrix.panel.margin = unit(c(1.5, 1.5), "pt"), combmatrix.panel.striped_background = TRUE, combmatrix.panel.striped_background.color.one = "white", combmatrix.panel.striped_background.color.two = "#F7F7F7", combmatrix.panel.point.size = 3, combmatrix.panel.line.size = 1.2, combmatrix.panel.point.color.fill = "red", combmatrix.panel.point.color.empty = "#E0E0E0", )+theme(panel.border = element_rect(colour = "black", fill = NA, size = 2))+theme(panel.background = element_blank(),axis.text.y = element_text(size = 9))

相关文章:
upset 绘制
好久没有更新,今天来一个upset图的绘制 1.1 安装包 #绘制upset的包现在看来有三个 ## UpSet ### 最基本的upsetR包,使用方便,但是扩展不方便 devtools::install_github("hms-dbmi/UpSetR") ## complex-upset ### UpSet的升级款 支持ggplot2 devtools::install_git…...
声明 | 为打击假冒账号、恶意抄袭账号等诈骗活动,提升本账号权威,本博主特此郑重声明
声明 | 为打击假冒账号、恶意抄袭账号诈骗活动,提升本账号权威,本博主特此郑重声明 一、本账号为《机器学习之心》博主CSDN唯一官方账号,唯一联系方式见文章底部。 二、《机器学习之心》博主未授权任何第三方账号进行模型合作、程序设计、源…...
云计算:OpenStack 配置二层物理网卡为三层桥的接口
目录 一、理论 1.OpenStack 二、实验 1. Linux系统修改网卡 2.OpenStack 配置二层物理网卡为三层桥的接口 一、理论 1.OpenStack (1)概念 OpenStack是一个开源的云计算管理平台项目,是一系列软件开源项目的组合。由NASA(美国国家航空…...
Python sanic框架钉钉和第三方打卡机实现
同样还是需要开通钉钉应用这里就不错多说了 第一步:梳理逻辑流程 前提:打卡的机器是使用postgres数据库,由于因为某些原因,钉钉userId 我已经提前获取到了存放到数据库里。 1.用户打卡成功后,我们应该监听数据库进行查询…...
微信小程序性能优化
1. 代码包不包含插件大小超过 1.5 M 建议:小程序代码包单个包大小限制为2M。因此我们建议开发者在开发时,如果遇到单包体积大于1.5M的情况,可以采取分包的方式,把部分代码拆分到分包去,降低单个包的体积,提…...
java并发编程六 ReentrantLock,锁的活跃性
多把锁 一间大屋子有两个功能:睡觉、学习,互不相干。 现在小南要学习,小女要睡觉,但如果只用一间屋子(一个对象锁)的话,那么并发度很低 解决方法是准备多个房间(多个对象锁…...
深度学习 | DRNN、BRNN、LSTM、GRU
1、深度循环神经网络 1.1、基本思想 能捕捉数据中更复杂模式并更好地处理长期依赖关系。 深度分层模型比浅层模型更有效率。 Deep RNN比传统RNN表征能力更强。 那么该如何引入深层结构呢? 传统的RNN在每个时间步的迭代都可以分为三个部分: 1.2、三种深层…...
代理模式:中间者的故事
代理模式:中间者的故事 介绍需求分析代理模式代码实现代理模式整理和用途第一种用途第二种用途第三种用途第四种用途 总结 介绍 本文引用《大话设计模式》第七章节的内容进行学习分析,仅供学习使用 需求:小明拜托自己好朋友小王给他朋友小美…...
中间件系列 - Redis入门到实战(高级篇-多级缓存)
前言 学习视频: 黑马程序员Redis入门到实战教程,深度透析redis底层原理redis分布式锁企业解决方案黑马点评实战项目 中间件系列 - Redis入门到实战 本内容仅用于个人学习笔记,如有侵扰,联系删除 学习目标 JVM进程缓存Lua语法入…...
是德科技E9304A功率传感器
是德科技E9304A二极管功率传感器测量频率范围为9 kHz至6 GHz的平均功率,功率范围为-60至20 dBm。该传感器非常适合甚低频(VLF)功率测量。E系列E9304A功率传感器有两个独立的测量路径,设计用于EPM系列功率计。功率计自动选择合适的功率电平路径。为了避免…...
视频格式网络地址转换视频到本地,获取封面、时长,其他格式转换成mp4
使用ffmpeg软件转换网络视频,先从官网下载对应操作系统环境的包 注意:网络地址需要是视频格式结尾,例如.mp4,.flv 等 官网地址:Download FFmpeg window包: linux包: 如果下载缓慢,下载迅雷安装使用…...
企业私有云容器化架构运维实战
什么是虚拟化: 虚拟化(Virtualization)技术最早出现在 20 世纪 60 年代的 IBM 大型机系统,在70年代的 System 370 系列中逐渐流行起来,这些机器通过一种叫虚拟机监控器(Virtual Machine Monitor,VMM&#x…...
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用UserSet功能保存和载入相机的各类参数(C++)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用UserSet功能保存和载入相机的各类参数(C) Baumer工业相机Baumer工业相机NEOAPISDK中UserSet的技术背景代码案例分享第一步:保存相机当前参数设置UserSet_Save第二步:载入已经保存…...
STM32的以太网外设+PHY(LAN8720)使用详解(3):PHY寄存器详解
0 工具准备 1.野火 stm32f407霸天虎开发板 2.LAN8720数据手册 3.STM32F4xx中文参考手册1 PHY寄存器 前面介绍到,站管理接口(SMI)允许应用程序通过2线时钟和数据线访问任意PHY寄存器,同时该接口支持访问最多32个PHY,也…...
缓存和缓冲的区别
近期被这两个词汇困扰了,感觉有本质的区别,搜了一些资料,整理如下 计算机内部的几个部分图如下 缓存(cache) https://baike.baidu.com/item/%E7%BC%93%E5%AD%98 提到缓存(cache),就…...
C++高级-STL库概述
目录 一、概念 二、STL的历史背景 三、STL的版本 四、STL的主要优势...
uniapp 统一获取授权提示和48小时间隔授权
应用商店审核要求 获取权限前需要给提示,拒绝之后48小时不能给弹窗授权 项目用的是uniapp getImagePermission(v?: string, tag?: any, source?: any, proj?: any) {// proj proj || vueSelf.$proj(tag, source);let data {state: false,//是否原生授权denied…...
Halcon点云重建
dev_close_window () *点云文件数据的读取 read_object_model_3d (‘E:/1.om3’, ‘mm’, [], [], ObjectModel3D, Status) *获得点云的数据,例如高度 get_object_model_3d_params (ObjectModel3D, ‘point_coord_z’, GenParamValue) dev_open_window (0, 0, 512, …...
docker学习(二十一、network使用示例container、自定义)
文章目录 一、container应用示例1.需要共用同一个端口的服务,不适用container方式2.可用示例3.停掉共享源的容器,其他容器只有本地回环lo地址 总结 二、自定义网络应用示例默认bridge,容器间ip通信默认bridge,容器间服务名不通 自…...
【Python机器学习系列】一文带你了解机器学习中的Pipeline管道机制(理论+源码)
这是Python机器学习原创文章,我的第183篇原创文章。 一、引言 对于表格数据,一套完整的机器学习建模流程如下: 背景知识1:机器学习中的学习器 【Python机器学习系列】一文搞懂机器学习中的转换器和估计器(附案例&…...
Kangaroo运动控制器Packet Serial通信协议详解
1. Kangaroo运动控制器底层通信技术解析 Kangaroo运动控制器是由RoboClaw系列厂商推出的专用闭环步进/伺服电机驱动模块,其核心价值在于将复杂的PID调节、电流环控制、位置反馈处理等算法固化于硬件中,使上位机仅需通过精简的串行协议即可完成高精度运动…...
3个维度解析G-Helper:华硕笔记本性能优化的轻量级解决方案
3个维度解析G-Helper:华硕笔记本性能优化的轻量级解决方案 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops. Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and other models 项目…...
学浪视频下载终极方案:Fiddler+N_m3u8D联动配置避坑指南
学浪视频高效下载实战:Fiddler与N_m3u8D深度配置指南 在知识付费盛行的时代,学浪平台汇聚了大量优质课程资源。对于需要反复学习或离线观看的用户而言,掌握一套稳定高效的视频下载方法显得尤为重要。本文将深入探讨如何通过Fiddler抓包工具与…...
三菱Q00/PLC与台达DTA温控器通讯案例 功能:通过三菱QJ71C24N模块与台达DTA温...
三菱Q00/PLC与台达DTA温控器通讯案例 功能:通过三菱QJ71C24N模块与台达DTA温控器进行modbus-rtu通讯,实现温度读取、实际输出率(%)读取,及温度的设定、和温控探头类型的设定,PLC本体232-COM口与电脑通讯&am…...
ESP32 RMT实现MilesTag 2激光对抗协议
1. milesTag库概述:基于ESP32 RMT外设的MilesTag 2协议激光对抗系统实现milesTag是一个专为Arduino平台设计的轻量级嵌入式库,其核心目标是为开发者提供一套可复用、高精度、低CPU开销的MilesTag 2协议实现方案,用于构建高性能激光对抗&#…...
单片机开源项目精选:从按键处理到物联网平台
1. 单片机开源项目精选:从按键处理到物联网平台 在嵌入式开发领域,GitHub上有大量高质量的开源项目可以加速我们的开发进程。这些项目往往由一线工程师开发维护,经过实际项目验证,比商业库更贴近开发者真实需求。今天我将分享几个…...
你不知道的微信小程序环境判断技巧:wx.getAccountInfoSync()与__wxConfig深度对比
微信小程序环境判断进阶指南:从API到底层变量的深度解析 在微信小程序开发中,环境判断是一个看似简单却暗藏玄机的基础功能。许多开发者可能满足于简单的if-else判断,却忽略了不同判断方式对性能、稳定性和可维护性的深远影响。本文将带你深入…...
ZYNQ双核通信必看:共享内存的Cache一致性处理实战
ZYNQ双核通信中的Cache一致性实战指南 在嵌入式系统开发中,多核处理器间的数据共享一直是开发者面临的挑战之一。Xilinx ZYNQ系列SoC凭借其ARM双核Cortex-A9架构与可编程逻辑的完美结合,为高性能嵌入式应用提供了强大支持。然而,当两个核心需…...
如何用智能工具提升暗黑破坏神3战斗效率:D3KeyHelper全功能指南
如何用智能工具提升暗黑破坏神3战斗效率:D3KeyHelper全功能指南 【免费下载链接】D3keyHelper D3KeyHelper是一个有图形界面,可自定义配置的暗黑3鼠标宏工具。 项目地址: https://gitcode.com/gh_mirrors/d3/D3keyHelper 暗黑破坏神3的战斗节奏快…...
OpenClaw 的模型服务是否支持基于策略的流量控制?
关于OpenClaw模型服务是否支持基于策略的流量控制,这个问题其实触及了现代AI服务部署中一个相当核心的环节。直接说结论的话,答案是肯定的,但更值得探讨的是它具体如何实现,以及这种支持在实际场景中意味着什么。 在技术架构层面&…...
