分享

韦恩图进阶!upset plot 01

 阿越就是我 2023-10-12 发布于上海

前面用2篇文章介绍了韦恩图的多种画法!

简单的韦恩图画法

ggplot2版本的韦恩图画法

普通的韦恩图显示2-4个集合效果比较好,但是如果有很多个集合,韦恩图就不太美观了,即使是支持最多7个集合的ggvenndiagram,因为彼此交叉太多,已经不利于呈现数据细节了。

  • upsetR

    • 基础使用

    • 个性化特定列(选择指定列)

library(ggVennDiagram)
library(ggplot2)

sets <- list(
  a = sample(1:500,300),
  b = sample(1:500,350),
  c = sample(1:500,420),
  d = sample(1:500,300),
  e = sample(1:500,400),
  f = sample(1:500,380),
  g = sample(1:500,400)
)

ggVennDiagram(sets,
              category.names = c("set 1","set 2","set 3","set 4","set 5","set6","set7"), 
              set_size = 6,
              label = "none"
              edge_lty = "solid"
              edge_size = 1.2 
              ) +
  scale_fill_gradient(low = "grey90",high = "grey60")
plot of chunk unnamed-chunk-1

这时候使用upset plot可能是更加合适的选择。

在R里面有很多包可以画upset plot,我们主要学习UpSetRcomplexheatmap

upsetR

基础使用

这个包的基础使用方法其实很简单,对于上面的数据集,直接使用就行。

library(UpSetR)

upset(fromList(sets),nsets = 7# 也可以从矩阵或者数据框读取
plot of chunk unnamed-chunk-2

这个图细节很多,但是不难理解,主体就是3各部分组成的。

左边条形显示每个集合元素数量,上面条形图展示每个交集内元素数量,下面的点(矩阵)表示所有出现的交集。

很多细节都是可以调整的,大家可以通过?upset查看所有支持的参数,下面介绍一些常用的。

upset(fromList(sets),
      order.by = "freq"# 排序方式
      nsets = 5# 展示几个集合,按照数量从大到小排列,或者使用sets参数指定集合名字
      mb.ratio = c(0.55,0.45), # 条形图和矩阵的相对比例
      number.angles = 30# 条形图上面数字角度
      point.size = 3# 点的大小
      line.size = 1.2# 线条粗细
      mainbar.y.label = "size of intersection"# 上面条形图的标题
      sets.x.label = "the number of each sets"# 坐标条形图的标题
      text.scale = c(1.31.31121.2# 元素大小
      )

text.scale控制7个元素的大小,要么提供1个数,要么提供7个数,每个数对应的元素种类如下:intersection size title, intersection size tick labels, set size title, set size tick labels, set names, numbers above bars

个性化特定列(选择指定列)

可以通过一些简单的参数直接改变一些元素的颜色。

upset(fromList(sets),order.by = "freq",
      matrix.color = "firebrick",
      main.bar.color = "steelblue",
      sets.bar.color = "grey70"
      )
plot of chunk unnamed-chunk-4

如果要指定某一个交集,改变外观,就需要queries参数。

upset(fromList(sets),order.by = "freq",
      main.bar.color = "steelblue",
      sets.bar.color = "grey70",
      
      # 选择指定交集,突出显示
      queries = list(
        list(query = intersects, params  = list("b","f","e"),color = "orange",active = T), # 选择b,f,e的交集
        list(query = intersects, params  = list("g","f","e"),color = "red",active = T# 选择e,f,g的交集 
      )
      )
plot of chunk unnamed-chunk-5

顾名思义,这个queries参数其实就是一个查询,把符合查询条件的交集找出来,然后赋予特定的颜色标记等,达到突出显示某些结果的作用。

关于这个queries还有很多其他用法,不过需要的数据格式也是要提供更多的信息,大家有需要的可以至官网[1]查看更多内容。

或者等我更新

后面会继续介绍这个upsetr包,十分强大,可以自定义的细节太多了~

参考资料

[1]

upsetr: https://cran./web/packages/UpSetR/vignettes/queries.html

以上就是今天的内容,希望对你有帮助哦!欢迎点赞、在看、关注、转发

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多