美文网首页
【R画图学习7】upset图

【R画图学习7】upset图

作者: jjjscuedu | 来源:发表于2022-10-20 09:56 被阅读0次

我们联系venn图的时候提到过超过5维的数据可能用upset图比较好,前面VennDetail也提到过它可以显示upset的形式,其实是这个包的函数调用了upset函数。

今天我们练习怎么利用upset函数生成自己想要的图。

还是用我们前面的测试数据:

library(UpSetR)

set1 <- paste(rep("test_" , 200) , sample(c(1:10000) , 200 , replace=F) , sep="")

set2 <- paste(rep("test_" , 500) , sample(c(1:10000) , 500 , replace=F) , sep="")

set3 <- paste(rep("test_" , 300) , sample(c(1:10000) , 300 , replace=F) , sep="")

set4 <- paste(rep("test_" , 500) , sample(c(1:10000) , 500 , replace=F) , sep="")

set5 <- paste(rep("test_" , 300) , sample(c(1:10000) , 300 , replace=F) , sep="")

input <- list("Set1"=set1,"Set2"=set2,"Set3"=set3,"Set4"=set4,"Set5"=set5)

先试下最简单的upset命令:

upset(fromList(input))

下面我们进行细节美化。

修改排序、坐标系、标签等参数

upset(fromList(input),

      order.by = "freq",  # 主坐标系排序

      number.angles = 0,  # 柱标倾角

      point.size = 3,  # 点大小

      line.size = 1,  # 线粗细

      mainbar.y.label = "Count of Intersection",  # y 标题

      sets.x.label = "Datasets Size",  # x 标题

      text.scale = c(2.5, 1.5, 2.5, 1.5, 2, 2),

      # y 标题 大小

      # y 刻度标签 大小

      # dataset size 标题 大小

      # dataset size 刻度标签 大小

      # dataset size 分类标签 大小

      # 柱数字 大小

    )

下面调整柱子的排序方式:

upset(fromList(input),

      order.by = "freq",  # 主坐标系排序

      number.angles = 0,  # 柱标倾角

      point.size = 3,  # 点大小

      line.size = 1,  # 线粗细

      mainbar.y.label = "Count of Intersection",  # y 标题

      sets.x.label = "Datasets Size",  # x 标题

      text.scale = c(2.5, 1.5, 2.5, 1.5, 2, 2),

      # y 标题 大小

      # y 刻度标签 大小

      # dataset size 标题 大小

      # dataset size 刻度标签 大小

      # dataset size 分类标签 大小

      # 柱数字 大小

      group.by = "sets",  # 按dataset排序

    )

也可以控制条形图和下方点图占的比例,通过 mb.ratio 来实现。

upset(fromList(input),

      order.by = "freq",  # 主坐标系排序

      number.angles = 0,  # 柱标倾角

      point.size = 3,  # 点大小

      line.size = 1,  # 线粗细

      mainbar.y.label = "Count of Intersection",  # y 标题

      sets.x.label = "Datasets Size",  # x 标题

      mb.ratio = c(0.65, 0.35),  #控制上方条形图以及下方点图的比例

      text.scale = c(2.5, 1.5, 2.5, 1.5, 2, 2),

      # y 标题 大小

      # y 刻度标签 大小

      # dataset size 标题 大小

      # dataset size 刻度标签 大小

      # dataset size 分类标签 大小

      # 柱数字 大小

      #group.by = "sets",  # 按dataset排序

      )

下面我们调整颜色,主要通过queries参数来实现。

queries参数分为四个部分:query, param, color, active;

query: 指定哪个query,UpSetR有内置,也可以自定义;

param: list, query作用于哪个交集

color:每个query都是一个list,里面可以设置颜色,没设置的话将调用包里默认的调色板;

active:被指定的条形图:TRUE显示颜色,FALSE在条形图顶端显示三角形;

下面试下调整看看。我们在queries里面定义了三组自定义色,分别面向单一,2个和3个变量。

library(RColorBrewer)

myCol <- brewer.pal(5, "Pastel2")

upset(fromList(input),

      order.by = "freq",  # 主坐标系排序

      number.angles = 0,  # 柱标倾角

      point.size = 3,  # 点大小

      line.size = 1,  # 线粗细

      mainbar.y.label = "Count of Intersection",  # y 标题

      sets.x.label = "Datasets Size",  # x 标题

      mb.ratio = c(0.65, 0.35),  #控制上方条形图以及下方点图的比例

      text.scale = c(2.5, 1.5, 2.5, 1.5, 2, 2),

      #group.by = "sets",  # 按dataset排序

      main.bar.color = "purple", #柱子的颜色

      sets.bar.color=myCol,  #数据集柱子的颜色

      queries = list(list(query = intersects, 

              params = list("Set2"),

              color = "red",

              active = F, 

              query.name = "Set2"),

    list(query = intersects,  params = list("Set3", "Set4"), active = T,color="cyan",query.name = "Set3_Set4"),

    list(query = intersects,  params = list("Set1", "Set3", "Set4"), color = "orange", active = T,query.name="three sets")),

    query.legend = "top"

)

当然,色系大家可以自己的喜好调整,我是随意挑了一个颜色做演示。

当然upset还可以通过attribute.plots参数添加一些如柱状图,散点图等。但是这个功能,其实你多画几个自己拼起来也是OK的。

相关文章

  • 【R画图学习7】upset图

    我们联系venn图的时候提到过超过5维的数据可能用upset图比较好,前面VennDetail也提到过它可以显示u...

  • R语言:upset集合图

    导读 venn可以分析不同数据集的交集,另外使用R语言UpSet函数包upset函数绘制集合图可以更清晰的展示不同...

  • 【R画图学习8.1】PCA图

    主成分分析,即Principle Component Analysis (PCA),是一种传统的统计学方法,被机器...

  • 【R画图学习14.1】面积图

    今天,我们来学习另一种常见的图形,面积图。什么是面积图呢?面积图是一种源于折线图但是改变了其展现方式的图形。具体地...

  • 【R画图学习15】哑铃图

    哑铃图,又叫做棒棒糖图。因其形状和棒棒糖相似而得名,具体来看实际上是一个散点和一条线段的组合。棒棒糖图是散点图的一...

  • R语言之ggplot2画图篇

    R语言之ggplot2画图篇

  • 【R画图学习11.2】弦图---circlize

    什么是弦图(Chord Diagram),其实也是圈图的一种,感觉就是圈图,并且看上去还是比较简单的圈图,就外围的...

  • 【R画图学习13.3】散点图---曼哈顿图

    曼哈顿图,我自己最常用于的场景就是GWAS分析之后,常使用它展示基因组中与某种表型显著相关的SNP位点或基因型信息...

  • 【R画图学习14.2】堆叠面积图

    先前提到堆叠柱形图展示群落物种丰度以及细胞比例变化等等。与此相较,堆叠面积图是另一种可视化选择,特别是在大样本情形...

  • 【R画图学习6.1】Venn图---VennDiagram

    这2天我们系统的学习一些画venn图的一些技巧。我们今天先测试这个最常用的包VennDiagram。 librar...

网友评论

      本文标题:【R画图学习7】upset图

      本文链接:https://www.haomeiwen.com/subject/urzuzrtx.html