这个程序是在线运行的,无需安装任何插件.输出一张图真的是分分钟的事儿!其实即使不是画韦恩图,也可以利用这个网站,找出两种不同处理(状态)的共有基因,或者特有基因等等.
使用limma包
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#安装limma包
#source("http://www.bioconductor.org/biocLite.R")
#biocLite("limma")
#载入limma包
library(limma)
hsb2 《- read.table("http://www.ats.ucla.edu/stat/R/notes/hsb2.csv", sep=',', header=T)
attach(hsb2)
hw 《- (write《=60)
hm 《- (math 《=60)
hr 《- (read 《=60)
c3 《- cbind(hw, hm, hr)
a 《- vennCounts(c3)
vennDiagram(a, include = "both", names = c("High Writing", "High Math", "High Reading"), cex = 1, counts.col = "red")
使用gplots包
1
2
3
4
5
6
7
8
9
10
11
12
13
#安装gplots包
#install.packages("gplots")
#载入gplots包
library(gplots)
oneName 《- function() paste(sample(LETTERS,5,replace=TRUE),collapse="")
geneNames 《- replicate(1000, oneName())
GroupA 《- sample(geneNames, 400, replace=FALSE)
GroupB 《- sample(geneNames, 750, replace=FALSE)
GroupC 《- sample(geneNames, 250, replace=FALSE)
GroupD 《- sample(geneNames, 300, replace=FALSE)
input 《-list(GroupA,GroupB,GroupC,GroupD)
venn(input)
使用venneuler包
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#安装venneuler包
#install.packages("venneuler")
#如果遇到rJava安装失败的问题,Ubuntu用户尝试可以通过以下方式解决
#sudo apt-get install r-cran-rjava
#载入venneuler包
library(venneuler)
m 《- data.frame(elements=c("1","2","2","2","3"), sets=c("A","A","B","C","C"))
v 《- venneuler(m)
plot(v)
m
# without weights
v 《- venneuler(m > 0)
plot(v)
# with weights
v 《- venneuler(m)
plot(v)
使用VennDiagram包
1
2
3
4
5
6
#安装VennDiagram包
#install.packages("VennDiagram")
#载入VennDiagram包
library(VennDiagram)
venn.diagram(list(A=1:10,B=3:8,C=6:9), fill=c("red","green","blue"), alpha=c(0.5,0.5,0.5), cex=2, cat.fontface=4, fontfamily=3, filename="VennDiagram.tiff")
建议用后面三种方法,最多能画5 sets,limma方法最多只能画3 sets
但在2013年Nature的文章《Draft genome of the wheat A-genome progenitor
Triticum urartu》中用的是这样的图,看起来不错,每个区域的大小偏差不会太大。
就是不知是怎画的。~~~
参考资料
还有一些有趣的Venn图
————————————————————————————
如何制作发表质量的Venn(维恩)图
--在Venn(维恩)图中根据数据比例调整集合的大小
转自科学网薛良交
通过不同方法,对于不同的研究对象,你可能得到不同的列表。比如不同表达模式的基因,不同矿物的组分,以及不同特征的人群......接下来,你可能希望把它们用集合的形式显示出来,看看各部分的交集,以及哪些类别较多。最简单的方法是用PPT画出不同的圈圈,然后标上数字。如果想让不同交集的尺寸随着数字的大小而调整,可能需要花上一点功夫。
这里有一个一劳永逸的方法(Vennerable
package),轻松获得和高水平文章上类似的Venn(维恩)图。
简单搜索了一下,网上还没有中文的相关文档,或者一些文档对R语言有一定的要求。于是,写了一段代码,让会用Excel、
知道R(http://www.r-project.org/)尚没有学习写R代码的同学可以做出相同的图片。把代码贴出来,让需要的同学少走些弯路。
0. For
advanced R User:
Reference to Vennerable package
1.For
R Beginner:
A.工具安装
1)安装R环境(选最新版本下载,双击,一直按确定即可)。运行R,打开命令窗口。
2)安装Vennerable包
输入:
install.packages("Vennerable",
repos="http://R-Forge.R-project.org")
选择服务器,确定
或者:先下载ZIP(Windows)文件,然后Packages--Install
from Zip files
3)导入Vennerable包
library(Vennerable)
这时R可能通知还需要其它软件包,记下需要的软件,选最新版本下载ZIP文件,并安装,或者在命令窗口输入install.packages("XYZ"),选择服务器,确定。报错?那就先下载再安装。
B.开始工作
1)准备数据
建立一个Excel表格,包含元素和组别的关系,“是”则大于0,“否”则为0。
Name
Shanghai
Beijing
Guangzhou
XiaoWu
0
0
1
XiaoMing
0
1
0
XiaoHan
0
1
1
XiaoGao
1
0
0
XiaoFu
1
0
1
XiaoDai
1
1
0
XiaoChen
1
1
1
XiaoXue
1
0
1
这是各位同学去过的不同城市。另存为Tab 分隔的 txt 文件,取个名字比如travel.txt。
注意,演示数据中,最好各种情况都有,数据较少并且分布奇怪,Vennerable可能会不接受。
2)开始作图(依次把命令拷贝到命令窗口)
folder
file
# 告诉R,文件在哪里,叫什么名字,注意是“\\”
setwd(folder)
read.table(file,header=TRUE,sep="\t",row.names=1)->venndata;
library(Vennerable)
#数据整理
probe
sample
data
names(data)
for (num in 1:length(sample)){
hit
out0]
data[[num]]
}
#数据统计
Vstem
Vstem
#数据统计好了
#根据实际,选择作图命令
#2或3 分组
plot(Vstem)
# 4 个分组
plot(Vstem,type="ellipses",doWeights =FALSE)
# 5个及以上分组
请参照Vennerable package说明文档
# 1个分组
打开Windows PowerPoint,插入圈图即可。
当然可以把命令先拷到记事本中,编辑好后,一次拷入命令窗口。
恩,是不是你想要的。接下来,右键拷贝出即可。
-------------------------------------------------------------
这里有不调整集合尺寸的作图方法:
R语言
非R语言
如果做四组分类建议用这个(因为Vennerable也不调整尺寸)