韦恩图进阶之upsetplot :01

获取更多R语言知识,请关注公众号:医学和生信笔记

医学和生信笔记,专注R语言在临床医学中的使用,R语言数据分析和可视化。主要分享R语言做医学统计学、meta分析、网络药理学、临床预测模型、机器学习、生物信息学等。


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

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

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.3, 1.3, 1, 1, 2, 1.2) # 元素大小
      )

plot of chunk unnamed-chunk-3
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还有很多其他用法,不过需要的数据格式也是要提供更多的信息,大家有需要的可以至官网查看更多内容。或者等我更新

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

获取更多R语言知识,请关注公众号:医学和生信笔记

医学和生信笔记,专注R语言在临床医学中的使用,R语言数据分析和可视化。主要分享R语言做医学统计学、meta分析、网络药理学、临床预测模型、机器学习、生物信息学等。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值