JZXBK的个人博客分享 http://blog.sciencenet.cn/u/JZXBK

博文

R 绘制 韦恩图(venn图)

已有 13636 次阅读 2019-11-19 22:15 |系统分类:科研笔记

    绘制韦恩图需要的包是VennDiagram,可以看我之前的博客安装和加载R的包的操作,绘制的Venn图样式会如下图所示。这个包只能绘制2~5样本,就是说如下图是4个圈叠加在一起,这个包绘制的Venn图只能是最少2个椭圆圈,最多5个椭圆的。

image.png

比如你有9个样本,样本1,样本2,样本3......样本9,样本1-3是低温处理,样本4-6是室温处理,样本7-9是高温处理。可以将样本1-3求和,4-6求和,7-9求和。最后得到的就是类似下图的结果,当然这是我自己画的,数字也是我自己胡填的。

image.png

我看过多家测序公司的结果,微生物16s高通量测序结果基本都类似于下面这样,纵向为OTU,横向为你自己的样本名称。如果每个样本独立起来是没法用R作图的,而且也没有意义,可以依据你的实验处理方式进行分组。

image.png

先将数据进行整理,安你实验的分组,将上面的YC YN......划分到不同的分组中,再将相应的列求和,得到下面的结果。(将没用的行删掉)

image.png

install.packages("VennDiagram")

library(VennDiagram)

en<-read.csv("yotu_venn.csv",row.names=1)#读取csv文件,并将其赋值变量en

en<-t(en)#将变量en转置,并将转置的结果赋值给en,之前的结果会被覆盖

A<-names(en[1,])[en[1,]>0] #names()是处理对象的函数:显示各成分的名称,en[1,]是提取的第一列,                                               #en[1,]>0是逻辑向量,整句意思是将第一列值大于0的对象的行名赋值给A

B<-names(en[2,])[en[2,]>0] 

C<-names(en[3,])[en[3,]>0] 

D<-names(en[4,])[en[4,]>0]#如果是5个分组就加一列F<-names(en[5,])[en[5,]>0]当然后面绘图的颜色也要                                              #加一个,如果是3个分组就删掉D<-names(en[4,])[en[4,]>0],同理绘图时颜色                                              #减一个。

#绘图

venn.plot<-venn.diagram(x=list(YMCV=A,YYTV=B,CLV=C,DYV1=D),#各个分组的名称

filename ="venntu.png", #输出的图片名称

fill=c("cornflowerblue", "green", "red","darkorchid1"),

col = "transparent",alpha = 0.50,cex = 1.0,fontface = "bold",

cat.col = c("darkblue", "darkgreen","orange","darkorchid4"),

cat.cex = 1.5,cat.dist = 0.07,margin = 0.2)

image.png



https://wap.sciencenet.cn/blog-3419243-1206798.html

上一篇:R语言 包的安装
下一篇:R 语言 常用的小操作 小技巧
收藏 IP: 124.23.134.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-25 13:00

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部