# 一文解决韦恩图（零代码版本、R语言、python版本）

### (1)送给不喜欢编程的同学

http://bioinformatics.psb.ugent.be/webtools/Venn/

（1）导入准备做交集的文件。（2）点击submit选项。

### (2)送给喜欢用Python的同学

```# -*- coding: utf-8 -*-
"""
Created on Sat Jul 27 18:35:51 2019

@author: czh
"""
%reset -f
%clear
# In[*]
#绘图代码
from matplotlib import pyplot as plt
import numpy as np
from matplotlib_venn import venn3, venn3_circles
plt.figure(figsize=(4,4))
v = venn3(subsets=(230,32,109,33,56,20,44),set_labels = ('A', 'B', 'C'))
plt.show()```
```import matplotlib.pyplot as plt
from matplotlib_venn import venn3
import matplotlib.patheffects as path_effects

fig, ax = plt.subplots(figsize=(10, 10))
v = venn3(subsets = (10, 10, 4, 10, 4, 4, 2), set_labels = ('', '', ''), ax=ax)
v.get_label_by_id('100').set_text('Executive')
v.get_label_by_id('010').set_text('Legislative')
v.get_label_by_id('001').set_text('Judicial')
v.get_label_by_id('110').set_text('Example 1')
v.get_label_by_id('011').set_text('Example 2')
v.get_label_by_id('101').set_text('Example 3')
v.get_label_by_id('111').set_text('')
plt.title("The Three Branches of the US Government")

example_text = ('Example 1: The Vice President is considered "President of the Senate" and can vote to break ties.\n'
'Example 2: The Legislature confirms Supreme Court justices.\n'
'Example 3: The Executive appoints potential Supreme Court justices.')

text = fig.text(0.0, 0.05, example_text, ha='left', va='bottom', size=14)
text.set_path_effects([path_effects.Normal()])

plt.show()```

python的限制比较明显，不能做三个以上数据集的交集，所以推荐用R语言来做。

### （3）喜欢R语言的同学

• venneuler包
```setwd('D:\\F1\\deg')
rm(list=ls())
library(venneuler)
MyVenn <- venneuler(c(A=50,B=50,C=50,"A&B"=10,"A&C"=10,"B&C"=10,"A&B&C"=3))
MyVenn\$labels <- c("","","",
"","",
"")

plot(MyVenn)

text(0.4,0.2,"A(n=60)", cex = 1)
text(0.4,0.8,"B(n=70)", cex = 1)
text(0.75,0.5,"C(n=50)", cex = 1)
text(0.5,0.5,"5", cex = 1)
text(0.4,0.5,"10", cex = 1)
text(0.55,0.4,"20", cex = 1)
text(0.5,0.6,"30", cex = 1)```

• VennDiagram包
```library(VennDiagram)
A = 1:150
B = c(121:170,300:320)
C = c(20:40,141:200)
Length_A<-length(A)
Length_B<-length(B)
Length_C<-length(C)
Length_AB<-length(intersect(A,B))
Length_BC<-length(intersect(B,C))
Length_AC<-length(intersect(A,C))
Length_ABC<-length(intersect(intersect(A,B),C))

T<-venn.diagram(list(A=A,B=B),filename=NULL
,lwd=1,lty=2
,col=c('red','green'),fill=c('red','green')
,cat.col=c('red','green')
,rotation.degree=90)
grid.draw(T)```
```T<-venn.diagram(list(A=A,B=B,C=C),filename=NULL
,lwd=1,lty=2,col=c('red','green','blue')
,fill=c('red','green','blue')
,cat.col=c('red','green','blue')
,reverse=TRUE)
grid.draw(T)```

# 正文

（1）第一种：定义数据集后直接画图取交集

```library(UpSetR)
library(dplyr)
library(tidyr)
rm(list=ls())

```AA <- subset(diff, splice_type=="AA")
AP <- subset(diff, splice_type=="AP")
AT <- subset(diff, splice_type=="AT")```

```#fromList
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()```

（2）取交集后在画图

```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```

0 条评论

• ### Python数据处理从零开始----第二章（pandas）⑦pandas读写csv文件(1)

在第一部分中，我们将通过示例介绍如何读取CSV文件，如何从CSV读取特定列，如何读取多个CSV文件以及将它们组合到一个数据帧，以及最后如何转换数据 根据特定的数...

• ### 多芯片分析（如何将多个测序、芯片数据集合并为一个数据集）（1）

这是一个对我有特殊意义的教程，大约在一年半以前，我和朋友开始研究如何将多个数据集合并为一个数据集来分析，但是当时试了很多方法，效果不理想，再加上很多前辈告诉我很...

• ### 焦点事件

焦点详解：使浏览器能够区分用户输入的对象，当一个元素有焦点的时候就可以接收用户的输入 1.点击 2.tab 3.js

• ### PC逆向之代码还原技术,第五讲汇编中乘法的代码还原

在汇编中,乘法指令使用 IMUL 或者 MUL指令. 一般有两种形式 IMUL reg,imm 这种指令格式是 reg * imm的结果 重新放到reg中. ...

• ### 创建SvcHost.exe调用的服务原理与实践

1. 多个服务共享一个Svchost.exe进程利与弊 windows 系统服务分为独立进程和共享进程两种，在windows NT时只有服务...

• ### PHP解析Markdown库,parsedown扩展自定义语法

在开发系统过程中，有些信息编写储存是使用Markdown通用语法，但由于各个平台的会新增一些独特规范，一般的解析库都是只包含了标准语法，对于自定义语法是不支持解...

• ### python3 cookbook

使用deque(maxlen=N)构造函数会新建一个固定大小的队列.当新的元素加入并且这个队列已满的时候,最老的元素会被移除掉.在队列两端插入或者删除元素时间复...