vlambda博客
学习文章列表

【R语言】韦恩图合集

点击上方蓝字  关注我们
【R语言】韦恩图合集

在 R 语言中绘制韦恩图通常有两种方法,小于 5 个集合的用 R 包 VennDiagram 即可完成绘制;超过 5 个的使用 R 包 UpSetR 进行绘制。

【R语言】韦恩图合集
【R语言】韦恩图合集

VennDiagram
rm(list = ls())

data.test = data.frame(A = rep(c('a','b','c'),c(10,23,17)),
                       B = rep(c('b','c','e'),c(15,25,10)),
                       C = rep(c('a','c','e'),c(18,12,20)),
                       D = rep(c('a','c','d'),c(18,12,20)))

library(VennDiagram)                       
# 计算重叠

venn.diagram(x = list(A = data.test$A,
                      D = data.test$D,
                      B = data.test$B,
                      C = data.test$C),
             height = 3000# 高度
             width = 3000# 宽度
             resolution = 500# 分辨率
             main = 'test'# 标题
             main.cex = 4# 标题字体大小
             main.col = 'red'# 标题颜色
             fill = c('red','blue','green','orange'), # 填充色
             col = 'black',# 边框颜色
             lwd = 2# 线宽度
             alpha = .5# 透明度
             cat.cex = 2# 标签字体大小
             filename = 'figures/venn.test.tiff'# 文件名
             )

【R语言】韦恩图合集

当集合很多的时候怎么办下面这个图是 2012 年 Nature 上的图 ,看起来真的是好复杂啊!这时候就该 UpSet 上场了。

【R语言】韦恩图合集

【R语言】韦恩图合集
【R语言】韦恩图合集

UpSetR

【R语言】韦恩图合集

UpSetR 有对应的网站:http://caleydo.org/tools/upset/。还有 Shiny APP:https://gehlenborglab.shinyapps.io/upsetr/。R 包的使用可以参考对应的 GitHub:https://github.com/hms-dbmi/UpSetR。也有开发者使用 Python 开发了对应的 Python 应用:https://github.com/ImSoErgodic/py-upset。

其中,Shiny APP 的示例视频是 YouTube 上的,我把它下载上传到腾讯视频了,点击观看即可。

library(UpSetR)
# 直接读取R包示例数据
movies <- read.csv( system.file("extdata""movies.csv"
                                package = "UpSetR"), header=T, sep=";" )
mutations <- read.csv( system.file("extdata""mutations.csv"
                                   package = "UpSetR"), header=T, sep = ",")

upset(mutations, 
      sets = c("PTEN""TP53""EGFR""PIK3R1""RB1"), 
      sets.bar.color = "#56B4E9",
      order.by = "freq")

【R语言】韦恩图合集

下面这段代码可以展示更多内容:

upset(movies, # 绘图数据集
      sets.bar.color = "red"# 侧边柱子颜色
      matrix.color = 'blue'# 相互关系连线(点)的颜色
      main.bar.color = 'black'# 交互数量柱状图颜色及附图颜色
      mainbar.y.label = 'Intersection Size'# 主柱状图Y轴标题
      sets.x.label = '这是X轴标题'# 左侧柱状图X轴标题
      point.size = 1.8# 交互点的大小
      line.size = 1.2# 交互线的宽度
      att.pos = 'bottom',
      att.color = 'yellowgreen'# 变量展示图颜色
      number.angles = 0# 柱状图上数字旋转角度
      group.by = 'degree'# 数据分组标准可以降序(degree)也可以按数据集(sets)
      # 下面的代码主要是展示感兴趣的变量之间的关系
      attribute.plots=list(gridrows=60,
                           plots=list(list(plot=scatter_plot, 
                                           x="ReleaseDate"
                                           y="AvgRating"),
                                      list(plot=scatter_plot, 
                                           x="ReleaseDate"
                                           y="Watches"),
                                      list(plot=scatter_plot, 
                                           x="Watches"
                                           y="AvgRating"),
                                      list(plot=histogram, 
                                           x="ReleaseDate")), 
                           ncols = 2))

【R语言】韦恩图合集

我觉得最酷炫的地方在于可以自定义下方附图函数,展示想要的任何图像:

# 构建绘图函数
plot.test = function(mydata,x,y){
        library(ggplot2)
        my.plot = (ggplot(data = mydata, aes(x = as.character(mydata[,x]),
                                              y = mydata[,y], 
                                              fill = as.character(mydata[,x])))+
                            geom_boxplot()+
                            theme_classic()+
                            labs(x = x, y = y)+
                            theme(legend.position = 'none'))
}

# 使用绘图函数
upset(movies,
      sets = c("Action""Adventure""Children""War""Noir"),
      attribute.plots=list(gridrows = 100
                           ncols = 1
                           plots = list(list(plot=plot.test, # 使用函数
                                             x="ReleaseDate",
                                             y="Watches",
                                             queries=T))))

【R语言】韦恩图合集

参考文献

[1] D’hont, Angélique, et al. "The banana (Musa acuminata) genome and the evolution of monocotyledonous plants." Nature 488.7410 (2012): 213-217.