用R绘制五元的Upset图和Venn图并绘制文本表

前言

很多时候,韦恩图只适合在维数较低的时候使用,一旦集合多了,看起来会很复杂,可视性比较差,这个时候就需要用到upset图,虽然看起来没那么酷炫,但是可视性极佳。两者结合起来,就会显得很高大上。

Vennplot
upsetR
Texttable

代码


library(biomaRt)
ensembl <- useMart("ensembl")
dataset <- useDataset("hsapiens_gene_ensembl", mart = ensembl)
filter <- listFilters(dataset)
attributes <- listAttributes(dataset)

#读入数据
#install.packages("xlsx")
library(xlsx)
igg_1 = read.xlsx(file = "IGG-1-proteins.xlsx", sheetIndex = 1)
igg_2 = read.xlsx(file = "IGG-2-proteins.xlsx", sheetIndex = 1)
flag1_1 = read.xlsx(file = "flag-1-proteins.xlsx", sheetIndex = 1)
flag1_2 = read.xlsx(file = "flag-2-proteins.xlsx", sheetIndex = 1)
crapome = read.table(file = "E:\\WORK\\crapome\\crap_human_11.matrix.txt", header = T, sep = "\t")
#出现频率大于0.05的视为污染物
crapome_gt10 = crapome[crapome[, 3] / (length(crapome[1, ]) - 5) > 0.05, ]

#画UpsetR/venn
#install.packages("UpSetR")
library(UpSetR)
#安装VennDiagram包
#install.packages("VennDiagram")
#载入VennDiagram包
library(VennDiagram)
igg_1$Accession = gsub(pattern = "-.", "",  igg_1$Accession)
igg_2$Accession = gsub(pattern = "-.", "", igg_2$Accession)
flag1_1$Accession = gsub(pattern = "-.", "", flag1_1$Accession)
flag1_2$Accession = gsub(pattern = "-.", "", flag1_2$Accession)
A = getBM(
  attributes = c("hgnc_symbol", "uniprot_gn"),
  filters = "uniprot_gn",
  values = igg_1$Accession,
  mart = dataset
)
B = getBM(
  attributes = c("hgnc_symbol", "uniprot_gn"),
  filters = "uniprot_gn",
  values = igg_2$Accession,
  mart = dataset
)
C = getBM(
  attributes = c("hgnc_symbol", "uniprot_gn"),
  filters = "uniprot_gn",
  values = flag1_1$Accession,
  mart = dataset
)
D = getBM(
  attributes = c("hgnc_symbol", "uniprot_gn"),
  filters = "uniprot_gn",
  values = flag1_2$Accession,
  mart = dataset
)

colnames(A) = c("Gene", "Accession")
colnames(B) = c("Gene", "Accession")
colnames(C) = c("Gene", "Accession")
colnames(D) = c("Gene", "Accession")

igg_1 = merge(igg_1, A, by = "Accession")
igg_2 = merge(igg_2, B, by = "Accession")
flag1_1 = merge(flag1_1, C, by = "Accession")
flag1_2 = merge(flag1_2, D, by = "Accession")

flag1_1 = flag1_1[flag1_1$X..PSMs > 8, ]
flag1_2 = flag1_2[flag1_2$X..PSMs > 8, ]

upsetR_data = list(
  IgG_Hs578T = igg_1$Gene,
  IgG_MDA_MB_231 = igg_2$Gene,
  CRAPome = as.character(crapome_gt10$Gene),
  FLAG_Hs578T = flag1_1$Gene,
  FLAG_MDA_MB_231 = flag1_2$Gene
)

#install.packages("ggpubr")
library(ggpubr)
#整理最终那6个蛋白信息
pro = as.data.frame(setdiff(intersect(
  setdiff(upsetR_data$FLAG_Hs578T, upsetR_data$IgG_Hs578T),
  setdiff(upsetR_data$FLAG_MDA_MB_231, upsetR_data$IgG_MDA_MB_231)
), upsetR_data$CRAPome))
colnames(pro) = "Gene"
FLAG = merge(merge(flag1_1, pro, by = "Gene"),
             merge(flag1_2, pro, by = "Gene"),
             by = "Gene")
FLAG_Lite = FLAG[, c(1, 2, 3, 9, 20)]
FLAG_Lite[, 3] = gsub("OS.*", "", FLAG_Lite[, 3])
FLAG_Lite[, 6] = FLAG_Lite[, 4] + FLAG_Lite[, 5]
colnames(FLAG_Lite) = c(
  "Gene",
  "Uniprot Accession",
  "Description",
  "PSMs_Hs578T",
  "PSMs_MDA-MB-231",
  "PSMs_sum"
)
FLAG_Lite = FLAG_Lite[order(FLAG_Lite$PSMs_sum), ]


#install.packages('venn')
library(venn)

pdf(file = "MS_upsetR_Vennplot_texttable.pdf", width = 12)


#绘制文本表
ggtexttable(FLAG_Lite,
            rows = NULL,
            theme = ttheme(colnames.style = colnames_style(color = "white", fill = "#8cc257")))



#绘制Venn图
venn(
  upsetR_data,
  zcolor = 'style',
  opacity = 0.5,
  cexil = 1,
  cexsn = 1
)
#选择区域
zones <- getZones('00011')
#获取区域图心
centroid <- getCentroid(zones)[[1]]
#修改颜色
polygon(zones[[1]], col = "yellow2")
#修改文字
text(
  centroid[1],
  centroid[2],
  labels = "6",
  cex = 2,
  col = 'red',
  font = 2
)



#绘制Upset图
upset(
  fromList(upsetR_data),
  #柱形图按数量排列
  order.by = "freq",
  main.bar.color = "black",
  matrix.color = "skyblue",
  #左下角的Sets bar颜色
  sets.bar.color = c("red", "blue", "skyblue", "forestgreen", "gold"),
  #字体大小
  text.scale = 1.3,
  #字体旋转角度
  set_size.angles = -30,
  #坐标轴名称
  mainbar.y.label = "Gene Intersections Size",
  #选择需要显示的集合,这里把与别的集合没有交集的都去掉
  intersections = list(
    list("FLAG_Hs578T", "CRAPome"),
    list("FLAG_MDA_MB_231", "CRAPome"),
    list("FLAG_Hs578T", "FLAG_MDA_MB_231"),
    list("IgG_Hs578T", "CRAPome"),
    list("IgG_MDA_MB_231", "CRAPome"),
    list("IgG_Hs578T", "IgG_MDA_MB_231"),
    list("FLAG_Hs578T", "FLAG_MDA_MB_231", "CRAPome"),
    list("IgG_Hs578T", "IgG_MDA_MB_231", "CRAPome"),
    list("IgG_Hs578T", "FLAG_Hs578T", "FLAG_MDA_MB_231", "CRAPome"),
    list("IgG_MDA_MB_231", "FLAG_Hs578T", "FLAG_MDA_MB_231", "CRAPome"),
    list(
      "IgG_Hs578T",
      "IgG_MDA_MB_231",
      "FLAG_Hs578T",
      "FLAG_MDA_MB_231",
      "CRAPome"
    )
  ),
  #选择突出显示的集合
  queries = list(
    list(
      query = intersects,
      params = list("FLAG_Hs578T", "FLAG_MDA_MB_231"),
      color = "orange",
      active = T
    )
  )
)

dev.off()
#单独绘制文本表
pdf(file = "MS_texttable.pdf", width = 12)
ggtexttable(FLAG_Lite,
            rows = NULL,
            theme = ttheme(colnames.style = colnames_style(color = "white", fill = "#8cc257")))
dev.off()

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,922评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,591评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,546评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,467评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,553评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,580评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,588评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,334评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,780评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,092评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,270评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,925评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,573评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,194评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,437评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,154评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容

  • 上周末的易效能的课程上,叶老师告诉了我们要学会道和术。有了道和术我们就能用最少的精力处理杂事,用最多的精力处理人生...
    Ivanlu666阅读 213评论 1 0
  • 1. 热播剧《我的前半生》如火如荼地进入大结局,子君逐渐走向独立自主,贺涵与唐晶摊牌,三人情感纠葛难分难解。 马伊...
    婷婷在想什么阅读 801评论 0 1
  • 物资终于送到了村头,人却走了一半。 赶紧组织人员穿上防护服,带上口罩和手套,一看表,已经晚上八点多了。 面对不利的...
    静静的凌河阅读 250评论 3 4
  • 今天早早的起床。洗脸刷牙,吃完早饭以后,妈妈陪我去学校。亲子诵读完以后,我们又回到班上诵读了《弟子规》。语文课我...
    刘家成同学阅读 183评论 0 0