使用ggClusterNet一条代码计算网络属性和节点性质

本次更新

  • 去除对microbiomeSeq的依赖:

    因为这个包目前在github上,bioconductor上的不好用。

写在前面

网络整体属性

- 平均度(Average degree)和平均加权度(Average weighted degree)对网络整体而言,平均度(average degree)为该网络中所有节点的度的平均值;同样的,平均加权度(average weighted degree)为该网络中所有节点的加权度的平均值。平均度和平均加权度可反映网络整体的连通程度。

对于每个节点的度和加权度的定义,详见“节点和边特征”。

- 距离(Distance)和网络直径(Diameter)网络图中节点间的“距离”(distance)这一概念,被定义为节点间最短路径的长度(若不存在路径则为正无穷)。这一距离也常被称为“捷径距离”(geodesic distance),其中“捷径”(geodesic)是最短路径的另一个名字。网络图中最长的距离的值被称为图的“直径”(diameter)。网络直径可反映网络的规模。

  • 图密度(Density)一个图的“密度”(density)是指实际出现的边与可能的边的频数之比,反映了网络的凝聚性特征。

  • 聚类系数(clustering coefficient)相对频率也可以用于定义图中的“聚集性”(clustering)概念,反映了网络的凝聚性特征。

  • 图分割(graph partitioning)和模块度(Modularity)图分割(graph partitioning)问题在复杂网络方面的文献中也常被称为社团发现(community detection)问题。

    模块度(modularity)是社团发现中用来衡量社团划分质量的一种方法,一个相对好的结果在社团(community)内部的节点连接度较高,而在社团外部节点的连接度较低。

    网络节点属性

    网络图中的基本元素是节点和边。

    节点和边通常会存在多种属性,代表了系统中元素的自身属性,以帮助我们更好地识别网络结构。

    关于节点和边属性的简要描述同样可见“网络基础简介”。

    通常情况下,这些属性往往是系统中元素所固有的,与这些元素本身有关。

    除了固有属性,当元素存在于网络结构中时,会被赋予一些重要的“节点特征”;

    同样地,边也被赋予了重要的“边特征”。

    这些可帮助我们进一步分析网络的拓扑结构。

  • 节点度(Degree):

    节点的度(频率)分布具有不同的特征,即服从不同的分布模式。

    网络度分布模式反映了该网络特殊的结构特征。

    如微生物共发生网络的度一般符合幂律分布,大部分物种具有少量的连接数,极个别的物种具有非常多的连接数,表明微生物群落构建方式是非随机的过程。

  • 接近中心性(Closeness centrality):

    接近中心性它反映了网络中某一节点与其他节点之间的接近程度。

    即对于一个节点,它距离其他节点越近,那么它的接近性中心性越大,也就越“重要”。

  • 介数中心性(Betweenness centrality):

    如果我们将这些路径视作进行通信所需的渠道,那么处于多条路径上的节点就是通信过程中的关键环节。

  • 特征向量中心性(Eigenvector centrality):

    如果一个节点的邻居中心性越高,节点本身的中心性也越高

实战

#--导入所需R包#-------
library(igraph)
library(network)
library(sna)
library(ggplot2)
library(ggrepel)
library(ggClusterNet)
library(tidyverse)
library("ggalt")

网络性质计算

# usethis::use_data(igraph, overwrite = TRUE)
data(igraph)
reslt = net_properties(igraph)
write.csv(reslt,"netproperties.csv")

节点性质计算

节点的性质可以映射到图形上。方便使用。

nodepro = node_properties(igraph)
dim(nodepro)
write.csv(nodepro,"nodeproperties.csv")

合并节点属性和物种和注释信息

# usethis::use_data(nodes, overwrite = TRUE)
# usethis::use_data(edge, overwrite = TRUE)
data(nodes)
data(edge)
#---------
nodeG = merge(nodes,nodepro,by = "row.names",all =FALSE)
dim(nodeG)
head(nodeG)
write.csv(nodeG,"nodeproperties1.csv")

出图

pnet <- ggplot() + geom_segment(aes(x = X1, y = Y1, xend = X2, yend = Y2,color = as.factor(wei_label)),
data = edge, size = 0.5) +
geom_point(aes(X1, X2,fill = Phylum,size = igraph.degree),pch = 21, data = nodeG) +
scale_colour_brewer(palette = "Set1") +
scale_x_continuous(breaks = NULL) + scale_y_continuous(breaks = NULL) +
# labs( title = paste(layout,"network",sep = "_"))+
# geom_text_repel(aes(X1, X2,label=Phylum),size=4, data = plotcord)+
# discard default grid + titles in ggplot2
theme(panel.background = element_blank()) +
# theme(legend.position = "none") +
theme(axis.title.x = element_blank(), axis.title.y = element_blank()) +
theme(legend.background = element_rect(colour = NA)) +
theme(panel.background = element_rect(fill = "white", colour = NA)) +
theme(panel.grid.minor = element_blank(), panel.grid.major = element_blank())
pnet

# pnet <- pnet + geom_text_repel(aes(X1, X2,label=elements),size=4, data = nodes)

(0)

相关推荐

  • R语言报错处理:The following object is masked from ‘package:stats’:

    引自 https://stackoverflow.com/questions/39137110/what-does-the-following-object-is-masked-from-packag ...

  • 课件4——Python进阶

    Python猜数小游戏[游戏规则]生成一个指定范围的随机数(如:1-100),然后玩家输入数值猜答案,屏幕会根据玩家输入的数字给出大小提示,一直到玩家猜出准确答案则游戏胜利并结束.import  ra ...

  • 第64天:XPath 和 lxml

    XPath 和 lxml XPath 全称为 Xml Path Language,即 Xml 路径语言,是一种在 Xml 文档中查找信息的语言.它提供了非常简洁的路径选择表达式,几乎所有的节点定位都可 ...

  • 使用ggClusterNet一条代码计算网络模块内连通度(Zi)和模块间连通度(Pi)

    写在前面 之前我看到microbiomeSeq编写了这些函数,同时将zipi plot做的更加精细一些,但是代码实在是太难用了,尤其是包冲突事件实在是太多,所以我不得已将他的函数做了修改,并放到ggC ...

  • ggClusterNet更新sparcc算法-一条代码完成微生物网络等均可使用

    写在前面 ggClusterNet开发到现在,任然是有好多的网络分析方面的功能需要添加进入,例如sparcc网络计算过程: SparCC 对微生物组数据拟合狄利克雷分布,对微生物的比例及相关性计算迭代 ...

  • ggClusterNet---一条代码完成全内容微生物网络

    写在前面 今年的毕业生应该是6月底离校,但是这位朋友到了九月份终于完善了手上的工作,对这几年来了一个完善的结束,感谢送给我的一方印章,也祝铠鸣大展宏图.再有就是ggclusterNet功能也完善了90 ...

  • 如何一条代码优雅的计算任意数量的线性回归图表

    写在前面 回归,是我们经常用到的分析手段,对于结果的确定比差异分析和相关分析都要更加深入,所以无论是大小文章,都可以看到回归的影子. 今天我来带大家,仅仅需要一条代码,就将这个分析做的透明,透彻,审稿 ...

  • (40条消息) 5G网络(接入网+承载网+核心网)

    前一段时间自己一直在做某市的5G试点项目,对5G的无线接入网相关技术有了更深入的认识.因此,希望通过无线接入网为线索(行话叫锚点),帮大家梳理一下无线侧接入网+承载网+核心网的架构,这里以接入网为主, ...

  • 63条工程量计算总结,绝对实用!

    公众号 来源:马楠讲造价 工程量的计算分不同的工程量单位,比如墙面抹灰以"㎡"为计量单位,窗帘合.窗帘轨.楼梯扶手.栏杆以"m"为计量单位,钢筋.钢管.工字钢以 ...

  • 造价人都知道的26条应计算建筑面积规则

    从事造价的对建筑面积一定不陌生,建筑面积是建筑占平面面积的多少,是一项重要的技术经济指标. 同时计算建筑面积也用于确定某些费用指标的基础,例如前几天讲的的 平整场地,地垂直运输费.超高施工增加费.脚手 ...

  • 实战:使用 Python 用不到 10 行代码计算汽车数量

    重磅干货,第一时间送达 在这篇文章中,将教你如何使用 Python 用 10 行代码构建自己的汽车计数器程序.本文所依赖的 python 库: opencv-pythoncvlib matplotli ...

  • 造价人都应知道的26条应计算建筑面积规则

    从事造价的对建筑面积一定不陌生,是建筑占平面面积的多少,是一项重要的技术经济指标. 同时计算建筑面积也用于确定某些费用指标的基础,例如前几天讲的的 平整场地,地垂直运输费.超高施工增加费.脚手架等,很 ...