R实战 | 利用upset展示实验设计分组(ggupset)

简介: R实战 | 利用upset展示实验设计分组(ggupset)

读图

image.png

可以看到,这个实验有3个处理 KO(敲除)、WT(野生型)、Drug(给药)。并且分别观察试验后 8、12、24h的反应。这么多的分组如何进行一个直观的展示呢?作者给了我们一个值得借鉴的思路。利用upset图的交集特性可以直观的反应分组情况,例如第一列即为敲除8h后的反应,最后一列即为不敲除并且给药48h后的反应。


绘制

# 安装并加载包
install.packages("ggupset")
library(ggupset)
library(ggplot2)
library(tidyverse)
# 导入并查看数据
data(df_complex_conditions)
head(df_complex_conditions)
# 数据为4列。是否敲除、是否给药、观测时间、反应
> head(df_complex_conditions)
# A tibble: 6 x 4
  KO    DrugA Timepoint response
  <lgl> <chr>     <dbl>    <dbl>
1 TRUE  Yes           8     84.3
2 TRUE  Yes           8    105. 
3 TRUE  Yes           8     79.1
4 TRUE  Yes           8    140. 
5 TRUE  Yes           8    108. 
6 TRUE  Yes           8     79.5
# 新增一列为分组标签
df <- df_complex_conditions %>%
      mutate(Label = pmap(list(KO, DrugA, Timepoint), function(KO, DrugA, Timepoint){
       c(if(KO) "KO" else "WT", if(DrugA == "Yes") "Drug", paste0(Timepoint, "h"))
      }))
# 绘制
ggplot(df,aes(x=Label, y=response)) +
  geom_boxplot() + #箱线图
  geom_jitter(aes(color=KO), width=0.1) + #散点
  geom_smooth(method = "lm", aes(group = paste0(KO, "-", DrugA))) + #分组拟合曲线
  scale_x_upset(order_by = "degree", #upset图
                sets = c("KO", "WT", "Drug", "8h", "24h", "48h"),
                position="top", name = "") +
  theme_combmatrix(combmatrix.label.text = element_text(size=12), #upset图主题
                   combmatrix.label.extra_spacing = 5)+
  theme_bw()

出图:

image.png


Tips:因为图为ggplot下画的 所以可自行扩展需要的内容。


相关文章
|
存储 数据可视化 Java
C++的各种用法展示(二)
C++的各种用法展示(二)
82 0
|
3月前
|
SQL 开发框架 前端开发
在Winform系统开发中,对表格列表中的内容进行分组展示
在Winform系统开发中,对表格列表中的内容进行分组展示
|
4月前
uniapp实战 —— 竖排多级分类展示
uniapp实战 —— 竖排多级分类展示
57 0
|
6月前
|
Java 数据库连接 数据库
JMETERGUI展示介绍
主要介绍JMETER默认工作区
45 0
|
存储 并行计算 vr&ar
C++的各种用法展示(一)
C++的各种用法展示(一)
69 0
|
JavaScript 数据可视化 搜索推荐
高德地图开发实战案例:使用Loca数据源展示海量点标注(海量点、自定义分类图标、聚合、信息提示、3D控件)
高德地图开发实战案例:使用Loca数据源展示海量点标注(海量点、自定义分类图标、聚合、信息提示、3D控件)
620 0
|
资源调度 JavaScript
如何基于lucian项目模板,打造一个基本列表展示 #99
如何基于lucian项目模板,打造一个基本列表展示 #99
83 0
|
资源调度
如何基于tristana项目模板,打造一个基本列表展示 #100
如何基于tristana项目模板,打造一个基本列表展示 #100
78 0
|
移动开发 JavaScript 算法
如何实现动态内容条件筛选
这两天看了一下后端给的接口文档,每一个都要求筛选,而且这个筛选还是多条件的,还是不能固定的,要求根据用户的输入然后筛选,我之前的实现大概是这样子,当用户想要筛选的时候就去检索条件,并输入相关的内容进行筛选