我在所有分类法级别上都有细菌OTU表。我想使用igraph(或任何其他软件包)来绘制网络。我从来没有创建过这样的情节,所以请问有人知道一些初学者的教程链接吗?或者,如果有人用脚本指导我,那么您的时间将不胜感激。谢谢!
答案 0 :(得分:1)
edgeslist
您可能想要第二个数据集,以指示节点的特征,即 aka 'nodes-list'。这些是第二个data.frame(或矩阵),其中第一个col表示节点名称,其他cols表示每个节点的特性。 Igraph中的节点列表必须指示每个单个节点。每个节点只能在节点列表中出现一次,并且不能在edges列表(“ from”或“ to”列)中丢失单个节点。此后,我们将此数据称为框架nodeslist
。
然后,您必须使用igraph::graph_from_data_frame(edgeslist, directed = F, vertices = nodeslist)
您可以访问此对象以编译一堆全局统计信息或获取与某些节点(例如cliques <- igraph::largest_cliques(mygraph)
或igraph::edge_density(mygraph, loops=T)
)相关的一些新数据
igraph::E(mygraph)$weight <- 1
或其他函数)。尝试找到一些现有的教程,例如this one。
答案 1 :(得分:1)
我不明白您拥有什么数据,这是小型网络分析例程的示例:
然后,您必须构建边缘列表。就我而言最常见 小型网络(不需要高性能)的一种方法是制作一个data.frame tidyverse。在网络分析的每种情况下,都需要一个边缘列表。通常是一个data.frame,其中有两个您称为网络的实体之间的链接。 然后分析:
%>%
),将发送到igraph并绘制的边列表: myedgeslist <- data.frame(from = c('man1', 'man2','man3', 'man3'),
to = c('man3','man1','man1', 'man2') )
mygraph <- myedgeslist %>% igraph::graph_from_data_frame(directed = T)
mygraph %>% igraph::plot.igraph()
在3个节点和4个链接之间绘制一个小型定向网络(Igraph说:IGRAPH DN-- 3 4 --
表示DN定向网络,3个节点和4个链接)。
myedgeslist %>% group_by(to) %>% summarise(nlinksto= n(), n_nodes=n_distinct(from)) %>% arrange(desc(n_nodes))
说'man1'是最中心的节点,因为有2个链接指向他(与man3和man2的单个链接相比)。
并行地,如我上面所述,阅读一些网络分析和计算指标的理论知识,以了解网络(集中度,互惠性……)。例如,
mygraph %>% igraph::edge_density()
说,在此网络中实现了66%的定向链接。
PS :绘制大型网络通常不是一个好主意,您必须将它们分成几部分,或者通过全局/分组统计信息恢复网络。