如果您从 R 中使用 igraph,请使用此选项
membership {igraph} | R 文档 |
igraph 社群检测函数将其结果作为 communities
类的对象返回。此手册页描述了此类的操作。
membership(communities)
## S3 method for class 'communities'
print(x, ...)
## S3 method for class 'communities'
modularity(x, ...)
## S3 method for class 'communities'
length(x)
sizes(communities)
algorithm(communities)
merges(communities)
crossing(communities, graph)
code_len(communities)
is_hierarchical(communities)
## S3 method for class 'communities'
as.dendrogram(object, hang = -1, use.modularity = FALSE, ...)
## S3 method for class 'communities'
as.hclust(x, hang = -1, use.modularity = FALSE, ...)
as_phylo(x, ...)
## S3 method for class 'communities'
as_phylo(x, use.modularity = FALSE, ...)
cut_at(communities, no, steps)
show_trace(communities)
## S3 method for class 'communities'
plot(
x,
y,
col = membership(x),
mark.groups = communities(x),
edge.color = c("black", "red")[crossing(x, y) + 1],
...
)
communities, x, object |
一个 |
... |
附加参数。 |
图 |
一个 igraph 图对象,对应于 |
hang |
数值标量,指示应如何根据其父节点的高度计算叶子的高度;请参见 |
use.modularity |
逻辑标量,指示是否使用模块化值来定义分支的高度。 |
no |
整数标量,表示所需的社群数量。如果太低或太高,则会给出错误消息。必须提供 |
steps |
执行的合并操作数以生成社群。必须提供 |
y |
一个 igraph 图对象,对应于 |
col |
颜色向量,采用常规 R 绘图方法接受的任何格式。此向量显式地给出了顶点的颜色。 |
mark.groups |
数字向量列表。可以使用彩色多边形突出显示社群。此处给出了绘制多边形的组。默认是使用社群给出的组。如果您不想突出显示任何组,请在此处提供 |
edge.color |
边的颜色。默认情况下,社群内的边为绿色,其他边为红色。 |
membership |
数值向量,每个顶点一个值,社群结构的成员向量。如果社群结构以另一种方式给出,例如通过合并矩阵,则也可能为 |
algorithm |
如果不是 |
merges |
如果不是 |
modularity |
数值标量或向量,社群结构的模块化值。如果(最佳)分割的模块化不可用,则也可以为 |
社群结构检测算法尝试通过优化某些标准并通常使用启发式方法来查找有向或无向图中的密集子图。
igraph 实现了许多社群检测方法(请参见下面的方法),所有这些方法都返回 communities
类的对象。因为社群结构检测算法不同,所以 communities
对象并不总是具有相同的结构。但是,它们有一些常见的操作,这些操作在此处进行了记录。
为 communities
定义了 print
泛型函数,它会打印一个简短的摘要。
可以在 communities
上调用 length
泛型函数,并返回社群的数量。
sizes
函数按其 ID 的顺序返回社群大小。
membership
给出了顶点到社群的划分。它返回一个数值向量,每个顶点一个值,即其社群的 ID。社群 ID 从 1 开始。请注意,某些算法计算社群的完整(或不完整)分层结构,而不仅仅是单个分区。对于这些算法,通常会返回最高模块化值的成员资格,但也请参见各个算法的手册页。
communities
也是一个函数的名称,该函数返回社群列表,每个社群都由其顶点标识。如果设置了 add.vertex.names
igraph 选项,并且图本身已命名,则顶点将具有符号名称。否则,将使用数字顶点 ID。
modularity
给出了分区的模块化分数。(有关详细信息,请参见 modularity.igraph
。对于不会导致单个分区的算法,将返回最高的模块化值。
algorithm
给出了用于计算社群结构的算法的名称。
crossing
返回一个逻辑向量,每个边一个值,根据边 ID 排序。当且仅当边根据 membership()
返回的(最佳)成员向量连接两个不同的社群时,该值为 TRUE
。
is_hierarchical
检查是否使用了分层算法来查找社群结构。某些函数仅对分层方法有意义(例如 merges
、cut_at
和 as.dendrogram
)。
merges
返回分层方法的合并矩阵。如果使用非分层方法查找社群结构,则会给出错误消息。您可以通过在 communities
对象上调用 is_hierarchical
来检查这一点。
cut_at
在所需位置切割分层社群查找方法的合并树,并返回一个成员向量。所需的位置可以表示为所需的社群数量或要进行的合并步骤的数量。如果使用非分层方法调用该函数,则会给出错误消息。
as.dendrogram
将分层社群结构转换为 dendrogram
对象。它仅适用于分层方法,并向其他方法给出错误消息。有关详细信息,请参见 dendrogram
。
as.hclust
与 as.dendrogram
类似,但将分层社群结构转换为 hclust
对象。
as_phylo
将分层社群结构转换为 phylo
对象,您将需要 ape
包才能执行此操作。
show_trace
(当前)仅适用于通过主导特征向量方法 (cluster_leading_eigen
) 找到的社群,并返回一个字符向量,其中给出了算法在查找社群时执行的步骤。
为 InfoMAP 方法 (cluster_infomap
) 定义了 code_len
,并返回分区的代码长度。
可以在 communities
对象上调用 plot
函数。这将绘制图(并在内部使用 plot.igraph
),并显示社群。默认情况下,它会根据顶点所属的社群对顶点进行着色,并标记与社群对应的顶点组。它将附加参数传递给 plot.igraph
,请参阅该文档以及 igraph.plotting
,了解如何更改绘图。
print
以不可见的方式返回 communities
对象本身。
length
返回一个整数标量。
sizes
返回一个数值向量。
membership
返回一个数值向量,图中的每个顶点一个数字,该图是社群检测的输入。
modularity
返回一个数值标量。
algorithm
返回一个字符标量。
crossing
返回一个逻辑向量。
is_hierarchical
返回一个逻辑标量。
merges
返回一个两列数值矩阵。
cut_at
返回一个数值向量,即顶点的成员向量。
as.dendrogram
返回一个 dendrogram
对象。
show_trace
返回一个字符向量。
code_len
返回使用 InfoMAP 方法找到的社群的数值标量,对于其他方法则返回 NULL
。
communities
对象的 plot
以不可见的方式返回 NULL
。
#' @author Gabor Csardi csardi.gabor@gmail.com
有关绘制社群结构树状图,请参见 plot_dendrogram
。
有关比较同一图上的两个社群结构,请参见 compare
。
以下是查找社群的不同方法,它们都返回 communities
对象:cluster_edge_betweenness
、cluster_fast_greedy
、cluster_label_prop
、cluster_leading_eigen
、cluster_louvain
、cluster_leiden
、cluster_optimal
、cluster_spinglass
、cluster_walktrap
。
karate <- make_graph("Zachary")
wc <- cluster_walktrap(karate)
modularity(wc)
membership(wc)
plot(wc, karate)