upset 绘制

news2025/2/1 6:48:18

好久没有更新,今天来一个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"
              )

UpSetR

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

ComplexUpset::upset(test.df,intersect = colnames(test.df))
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 × 2
  Sets  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))

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Multi-value PBS

参考文献&#xff1a; [CIM19] Carpov S, Izabachne M, Mollimard V. New techniques for multi-value input homomorphic evaluation and applications[C]//Topics in Cryptology–CT-RSA 2019: The Cryptographers’ Track at the RSA Conference 2019, San Francisco, CA, …

【C#】TimeSpan

文章目录 概述属性时间计算拓展来源 概述 TimeSpan结构&#xff1a;表示一个时间间隔。 它含有以下四个构造函数&#xff1a; TimeSpan(Int64)将 TimeSpan结构的新实例初始化为指定的刻度数。&#xff08;DateTime.Tick:是计算机的一个计时周期&#xff0c;单位是一百纳秒&…

饥荒Mod 开发(十七):手动保存和加载,无限重生

饥荒Mod 开发(十六)&#xff1a;五格装备栏 饥荒Mod 开发(十八)&#xff1a;Mod 添加配置选项 饥荒游戏会自动保存&#xff0c;本来是一个好的机制&#xff0c;但是当角色死亡的时候存档会被删除&#xff0c;又要从头开始&#xff0c;有可能一不小心玩了很久的档就直接给整没了…

计算机网络——物理层概述(二)

前言&#xff1a; 前面已经对计算机网络的概述有了一个简单的认识与了解了&#xff0c;什么是计算机网络&#xff0c;为什么学习计算机网络&#xff0c;计算机网络的概念与体系结构我们已经有了一个初步的认识与了解&#xff0c;现在我们要对计算机网络中的物理层进行一个学习与…

基于YOLOv8深度学习的智能玉米害虫检测识别系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

C语言的scanf输入函数的介绍分享

各位少年&#xff1a; 我来分享一个输入函数&#xff0c;scanf函数 是输入的函数&#xff0c;scanf&#xff08;“参数1”&#xff0c;参数2);好&#xff0c;我们接着看代码的例子 int main() { int score0; printf("请输入成绩:"); scanf("%d",&sco…

关于YOLOv5的训练,GPU单卡、多卡设置,加速训练

yolov5毫无疑问是目前目标检测框架中非常准确快速的检测框架之一&#xff0c;在工业界和学术界应用广泛&#xff0c;其优势不言而喻。 在模型训练或推理时&#xff0c;我们都想快速完成&#xff0c;特别是数据量很大的时候&#xff0c;效率就是非常迫切需要提升的。这里简单介…

【MAC、IOS】charles抓包配置教程,亲测有效

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;交流讨论&#xff1a;欢迎加入我们一起学习&#xff01;&#x1f4e2;资源分享&#xff1a;耗时200小时精选的「软件测试」资…

Python并行编程详解:发挥多核优势的艺术

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 在当今计算机时代&#xff0c;充分发挥多核处理器的性能是提高程序运行效率的关键。Python作为一门强大的编程语言&#xff0c;提供了多种并行编程工具和库。本文将深入介绍Python中的并行编程&#xff0c;探讨如…

再也不怕合照缺人,Anydoor为图片编辑开了一道「任意门」

原文&#xff1a;再也不怕合照缺人&#xff0c;Anydoor为图片编辑开了一道「任意门」 「能不能把这张图里的产品&#xff0c;都放到另一张图的桌子上&#xff1f;」 面对这样的要求&#xff0c;设计师肯定会脑瓜嗡嗡的。 把指定物品放进另一张图片不像贴张贴纸一样简单&#x…

java 项目日记实现两种方式:拦截器方式实现日记与定义日记注解方式实现日记

通常只要是java web项目基本都离不开项目日记&#xff0c;项目日记存在的意义很多&#xff0c;例如&#xff1a;安全审计&#xff0c;问题追踪都离不开项目日记。下面我们说一下项目日记实现最常用的两种方式 。 一 拉截器实现项目日记 1 实现一个拦截器基类&#xff0c;用于事…

c++打开网页

1.使用ShellExecute 效果图&#xff1a; 相关代码: void Open_url::on_pushButton_clicked() {QString path1 "explorer.exe";QString urlui->lineEdit->text();ShellExecute(NULL, L"open", path1.toStdWString().c_str(), url.toStdWString().c…

Ubuntu环境下使用Livox mid 360

参考文章&#xff1a; Ubuntu 20.04使用Livox mid 360 测试 FAST_LIO-CSDN博客 一&#xff1a;Livox mid 360驱动安装与测试 前言&#xff1a; Livox mid360需要使用Livox-SDK2&#xff0c;而非Livox-SDK&#xff0c;以及对应的livox_ros_driver2 。并需要修改FAST_LIO中部…

【科学计算语言】实验三 Python复杂数据类型

【目的和要求】 &#xff08;1&#xff09;掌握Python语言中的组合数据类型 &#xff08;2&#xff09;掌握列表、元组、字典、集合及字符串的基本应用 &#xff08;3&#xff09;熟练运用有关序列操作的Python内置函数 【实验准备】 【实验内容】 1. 实验练习&#xff1a;掌握…

SpringIOC之MethodBasedEvaluationContext

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

三个月真的可以学会自动化测试吗?不是骗局把?

三个月可以学会&#xff0c;但是想要达到精通还需更多的时间。 目前行业内对于自动化测试的还是存在很多误区的&#xff0c;管理层为了自动化而去自动化&#xff0c;学习者学到最后只会用一些工具。 关于学习路线&#xff0c;我放在后面讲&#xff0c;在此之前必须先聊一下行…

【Python小知识 - 6】:QLabel设置图片

文章目录 QLabel设置图片 QLabel设置图片 from PyQt5.QtWidgets import * from PyQt5.QtGui import * import sysapp QApplication(sys.argv)window QWidget()hbox QHBoxLayout(window)# 设置标签图片 lable QLabel() lable.setPixmap(QPixmap(./img/window.png).scaled(1…

算法基础之表达整数的奇怪方式

表达整数的奇怪方式 中国剩余定理: 求M 所有m之积 然后Mi M / mi x 如下图 满足要求 扩展中国剩余定理 找到x **使得x mod mi ai**成立 对于每两个式子 都可以推出①式 即 用扩展欧几里得算法 可以算出k1,-k2和m2–m1 判无解 : 若**(m2–m1) % d ! 0** 说明该等式无解 …

分子生成工具 - ResGen 评测

ResGen 模型是浙江大学药学院侯廷军老师课题组2023年发表在nature machine intelligence期刊上文章Nature Machine Intelligence | Volume 5 | September 2023 | 1020–1030&#xff0c;题目为&#xff1a;《ResGen is a pocket-aware 3D molecular generation model based on …

OpenFeign 万字教程详解

OpenFeign 万字教程详解 目录 一、概述 1.1.OpenFeign是什么&#xff1f;1.2.OpenFeign能干什么1.3.OpenFeign和Feign的区别1.4.FeignClient 二、OpenFeign使用 2.1.OpenFeign 常规远程调用2.2.OpenFeign 微服务使用步骤2.3.OpenFeign 超时控制2.4.OpenFeign 日志打印2.5.O…