正文
介紹一個R包UpSetR,專門用來集合可視化,當多集合的韋恩圖不容易看的時候,就是它大展身手的時候了。
原理比較簡單,做法大概分爲兩種,第一種是定義數據集後,畫圖自動取交集。第二種做法是先取交集,然後畫圖。繪製韋恩圖的目的主要是查看數據集之間的異同。
第一種:定義數據集後直接畫圖取交集
library(UpSetR) library(dplyr) library(tidyr) rm(list=ls()) diff <- read.csv("diffSig_ttest.csv",header = T,row.names = 1)
加載包和所使用的數據。
AA <- subset(diff, splice_type=="AA") AD <- subset(diff, splice_type=="AD") AP <- subset(diff, splice_type=="AP") AT <- subset(diff, splice_type=="AT")
取出準備取交集的數據集們
#fromList listinput <- list(AD = AD$symbol, AP = AP$symbol, AA = AA$symbol, AT = AT$symbol) library(UpSetR) # pdf(file='upset.pdf',height = 8,width = 8) p <- upset(fromList(listinput),nsets = 4, order.by = "freq") # dev.off()
繪製圖片
第二種:取交集後在畫圖
setwd("E:\\Rwork") library(UpSetR) require(ggplot2); require(plyr); require(gridExtra); require(grid); input <- c( 'cancer1'= 1578, 'cancer2' = 1284, 'cancer3' = 2488, 'cancer1&cancer2' =205, 'cancer1&cancer3' = 828, 'cancer2&cancer3' =589, 'cancer1&cancer2&cancer3' =120 ) data <- fromExpression(input) p1 <- upset(data, nsets = 9, sets = c('cancer1', 'cancer2' , 'cancer3'), keep.order = TRUE, # number.angles = 30, point.size = 5, line.size = 1.3, mainbar.y.label = "IntersectionSize", sets.x.label = "", mb.ratio = c(0.60, 0.40), text.scale = c(4, 4, 0.5, 0.5,3, 4)) p1