问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

掌握数据可视化利器:Upset图(集合图)绘制方法详解

创作时间:
作者:
@小白创作中心

掌握数据可视化利器:Upset图(集合图)绘制方法详解

引用
1
来源
1.
https://college.mimazi.net/cms/article-174.html

在数据分析和可视化中,经常需要对某几组样本中共有或特有的基因、OTU或微生物进行可视化。通常可以选择维恩图进行可视化,但当分组信息过多时,维恩图的展示能力及可读性则有所下降。因此,推荐使用维恩图的升级版本——集合图(Upset plot)。

集合图的主要组成部分

集合图主要由三部分组成:

  1. 最上面的y轴以柱状图形式展示,用于表示交集大小
  2. 下面左侧的x轴以条形图形式展示,表示每一个集合的大小
  3. 下面右侧的矩阵点表明集合之间的交集情况。例如,若两个样本间有相同的元素,则使用连线将两个样本相连;同样地,若多个样本间存在连线,那这部分即为这几个样本内的共有元素。

如何使用R语言绘制集合图

示例数据(data1.csv)

数据为丰度/表达量矩阵,表格需要带表头和列名,每一列为样本名,每一行为各种指标数据名,如OTU、基因ID、代谢物名称等。

集合图绘制示例

# 读取本地数据并查看
dat <- read.csv("data1.csv", header = TRUE, row.names = 1, check.names = F)
head(dat)

# 加载R包
# install.packages("UpSetR")
library(UpSetR)

# 将丰度矩阵中的非0值转换为1
dat[dat > 0] <- 1

# 集合图绘制
# 基础绘图
upset(dat)

# 集合图美化
upset(dat,
      nsets = 20, # 可视化数据集数量
      nintersects = 60, # 显示前多少个交集
      main.bar.color = 'blue', # 柱状图颜色
      matrix.color = "black", # 集合点的颜色
      sets.bar.color = "red", # 条形图条形的颜色
      set_size.show = F, # 是否在条形图上显示集合大小
      mb.ratio = c(0.5, 0.5) # 矩阵图与主柱图之比
)

# 将条形图颜色设置为不同的颜色
# install.packages("RColorBrewer")
library(RColorBrewer)
upset(dat,
      nsets = 20, # 可视化数据集数量
      nintersects = 60, # 显示前多少个交集
      main.bar.color = 'blue', # 柱状图颜色
      matrix.color = "black", # 集合点的颜色
      sets.bar.color = c(brewer.pal(10, "Set3"), brewer.pal(10, "Paired")), # 条形图条形的颜色
      set_size.show = F, # 是否在条形图上显示集合大小
      mb.ratio = c(0.5, 0.5) # 矩阵图与主柱图之比
)

# 高亮显示特定交集
# queries参数用于指定要显示的特定组的交集,每个元素都包含一个query(查询类型)和params(查询参数)字段。在这个例子中,有两个查询:第一个查询指定"S1"和"S8"集合的交集,将其显示为红色;第二个查询指定"S15"集合,将其显示为绿色。color字段用于设置交集的颜色,active字段用于指定是否激活该查询
upset(dat, nsets = 20, mb.ratio = c(0.5, 0.5),
      # 设置自己想要展示的特定组的交集
      queries = list(list(query = intersects, params = list("S1", "S8"),
                          color = "red", active = T),
                     list(query = intersects, params = list("S15"),
                          color = "green", active = T))
)

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号