R plot图片背景设置为透明_一文学会网络分析——Cooccurrence网络图在R中的实现...

本文介绍了如何在R中使用igraph包构建和分析Co-occurrence网络图,包括设置图片背景透明、计算网络参数如平均路径长度、聚集系数等。同时,展示了从相关性矩阵构建网络图的步骤,提供了多个绘图实例,如按相关性着色、设置边宽度、节点颜色和大小等。通过实例和网络参数,帮助读者掌握网络分析和高级绘图技巧。
摘要由CSDN通过智能技术生成

作者:陈亮  单位:中科院微生物所

编者按:在菌群月坛,在军科院听取王军组陈亮博士分享网络分析的经验,不仅使我对网络的背景知识有了更全面的认识,更使我手上一个关于菌根的课题有极大的启示。这么好的知识,当然希望和大家分享,故约稿陈博士在“宏基因组”发布一下他的经验,感谢陈博士的整理和分享。下面是正文:

网络分析背景知识

近年来,随着计算机技术的发展,网络科学研究在社会网络方面的分析方法已经成熟,从而促进了网络分析方法向其他领域的渗透,例如:信号传导网络、神经网络、代谢通路网络、基因调控网络、生态网络等。

基于图论(Graph theory)的网络科学认为,任何非连续事物之间的关系都可以用网络来表示,通过将互联网内的电脑、社会关系中的个人、生物的基因等不同属性的实体抽象为节点(Node),并用连接(Link)来展示实体之间的关系,通过量化以节点和连接为组件的网络结构指数(Index),从而能够在统一的框架下寻找复杂系统的共性。

目前生态学领域大家用到的网络图多为基于群落数据相关性构建的Co-occurrence网络图。此类网络可以采用R中igraph包构建并实现出图。当然,除此之外,还有一些非命令行的软件,例如cytoscape,gephi,pajek等。但我认为,对于R使用者来说,通过R做图还是最方便的。大致的流程如下图所示:

ba61c8e9c930a406e9207be28c7027bf.png

1)根据观察,实验或者相关性推断来确定物种间的联系。Co-occurrence网络的构建多是基于相关性推断来构建的。常用的相关性推断方法有Pearson,Spearman, Sparcc等方法。

2)通过构建的相关性矩阵或者相互作用列表来构建igraph对象。常用的方法有以下三种,分别由graph_from_incidence_matrix,graph_from_adjacency_matrix,graph_from_edgelist三个函数获得,详细信息参照igraph官方帮助文档。第一种数据格式是普通矩阵,矩阵中数字代表行列所代表的物种间存在联系,这种联系可通过实验或观察来得到。第二种数据格式是邻接矩阵,物种间相关性计算得到的通常为此种形式。第三种为边列表(edgelist),共两列数据,分别代表网络内的节点名称,每一行代表这两个节点间存在着联系。

4cf1c17272feef48d13185e11dc4a463.png

3)计算网络的各种参数,用以推断网络的性质。

常用网络参数有:

平均路径长度(Average path length):网络中任意两个节点之间的距离的平均值。其反映网络中各个节点间的分离程度。现实网络通常具有“小世界(Small-world)”特性。

聚集系数(Clustering coefficient):分局域聚类系数和全局聚集系数,是反映网络中节点的紧密关系的参数,也称为传递性。整个网络的全局聚集系数C表征了整个网络的平均的“成簇性质”。

介数(Betweenness):网络中不相邻的节点i和j之间的通讯主要依赖于连接节点i和j的最短路径。如果一个节点被许多最短路径经过,则表明该节点在网络中很重要。经过节点n的数量所占比例,介数反映了某节点在通过网络进行信息传输中的重要性。

连接性 (Connectance):网络中物种之间实际发生的相互作用数之和(连接数之和)占总的潜在相互作用数(连接数)的比例,可以反映网络的复杂程度。

此外还包括:度分布(Degree distribution)、平均度(Average degree)、平均介数(Average betweenness)、平均最近邻度(Average nearest-neighbor degree)、直径(Diameter)、介数中心性(Betweenness centralization)和度中心性(Degree centralization)等参数。
各网络参数计算方法及意义参见igraph.org官方帮助文档。

群落数据co-occurrence实例

网络分析需要两个文件,OTU表和OTU的属性;具体格式见测试数据 (后台 回复 网络 获取)

1.最简单的网络图

# 设置工作目录:请修改下方目录或在Rstudio的Session菜单中选择下载测试数据所在的目录
# setwd("~/Downloads/chenliang")

# 安装需要的包,默认不安装,没安装过的请取消如下注释
# install.packages("igraph")
# install.packages("psych")

# 加载包
library(igraph)
library(psych)

# 读取otu-sample矩阵,行为sample,列为otu
otu = read.table("otu_table.txt",head=T,row.names=1)

# 计算OTU间两两相关系数矩阵
# 数据量小时可以用psych包corr.test求相关性矩阵,数据量大时,可应用WGCNA中corAndPvalue, 但p值需要借助其他函数矫正
occor = corr.test(otu,use="pairwise",method="spearman",adjust="fdr",alpha=.05)
occor.r = occor$r # 取相关性矩阵R值
occor.p = occor$p # 取相关性矩阵p值

# 确定物种间存在相互作用关系的阈值,将相关性R矩阵内不符合的数据转换为0
occor.r[occor.p>0.05|abs(occor.r)<0.6] = 0

# 构建igraph对象
igraph = graph_from_adjacency_matrix(occor.r,mode="undirected",weighted=TRUE,diag=FALSE)
igraph
# NOTE:可以设置weighted=NULL,但是此时要注意此函数只能识别相互作用矩阵内正整数,所以应用前请确保矩阵正确。
# 可以按下面命令转换数据
# occor.r[occor.r!=0] = 1
# igraph = graph_from_adjacency_matrix(occor.r,
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值