如果您从 R 中使用 igraph,请使用此选项
igraph-package {igraph} | R 文档 |
igraph 是一个用于网络分析的库和 R 包。
igraph 库的主要目标是提供一组数据类型和函数,用于 1) 轻松实现图算法,2) 快速处理包含数百万个顶点和边的大型图,3) 允许通过 R 等高级语言进行快速原型设计。
igraph 图的类为 ‘igraph
’。 它们以特殊格式打印到屏幕上,这是一个示例,一个使用 make_ring
创建的环形图
IGRAPH U--- 10 10 -- Ring graph + attr: name (g/c), mutual (g/x), circular (g/x)
‘IGRAPH
’ 表示这是一个 igraph 图。 然后是四个位,表示图的种类:第一个是 ‘U
’ 表示无向图, ‘D
’ 表示有向图。 第二个是 ‘N
’ 表示命名图(即,如果图具有 ‘name
’ 顶点属性集)。 第三个是 ‘W
’ 表示加权图(即,如果设置了 ‘weight
’ 边属性)。 第四个是 ‘B
’ 表示二分图(即,如果设置了 ‘type
’ 顶点属性)。
然后是两个数字,图中的顶点数和边数,在双破折号后,如果存在,则打印图的名称(‘name
’ 图属性)。 第二行是可选的,它包含图的所有属性。 此图具有字符类型的 ‘name
’ 图属性,以及另外两个名为 ‘mutual
’ 和 ‘circular
’ 的图属性,它们是复杂类型。 复杂类型仅仅是指不是数字或字符的任何内容。 有关详细信息,请参阅 print.igraph
的文档。
如果要同时查看图的边,请使用 print_all
函数
> print_all(g) IGRAPH badcafe U--- 10 10 -- Ring graph + attr: name (g/c), mutual (g/x), circular (g/x) + edges: [1] 1-- 2 2-- 3 3-- 4 4-- 5 5-- 6 6-- 7 7-- 8 8-- 9 9--10 1--10
igraph 中有许多函数可用于创建图,包括确定性和随机图;随机图构造函数称为“games”。
要创建具有给定结构的小图,可能 graph_from_literal
函数是最简单的。 它使用 R 的公式界面,其手册页包含许多示例。 另一个选择是 graph
,它直接采用数字顶点 ID。 graph_from_atlas
从 Graph Atlas 创建图, make_graph
可以创建一些特殊的图。
要从字段数据创建图, graph_from_edgelist
, graph_from_data_frame
和 graph_from_adjacency_matrix
可能是最好的选择。
igraph 包包含一些经典的随机图,例如 Erdos-Renyi GNP 和 GNM 图 (sample_gnp
, sample_gnm
) 和一些最近流行的模型,例如 preferential attachment (sample_pa
) 和小世界模型 (sample_smallworld
)。
顶点和边在 igraph 中具有数字顶点 ID。 顶点 ID 始终是连续的,并且从一开始。 即,对于具有 n
个顶点的图,顶点 ID 在 1
和 n
之间。 如果某些操作更改了图中顶点的数量,例如,通过 induced_subgraph
创建了一个子图,则会重新编号顶点以满足此标准。
边也是如此,边 ID 始终在一和 m
之间, m
是图中边的总数。
通常需要沿着许多图操作跟踪顶点,并且由于重新编号,顶点 ID 不允许这样做。 解决方案是为顶点分配属性。 如果可能,所有操作都会保留这些属性。 有关属性的更多信息,请参见下一节。
在 igraph 中,可以将属性分配给图的顶点或边,或者图本身。 igraph 提供了灵活的构造,用于基于其属性值选择一组顶点或边,有关详细信息,请参见 vertex_attr
, V
和 E
。
某些顶点/边/图属性被特殊对待。 其中之一是 ‘name’ 属性。 如果存在,则用于打印图而不是数字 ID。 顶点名称也可以用于指定向量或顶点集,在所有 igraph 函数中。 例如, degree
具有一个 v
参数,该参数给出了计算度的顶点。 可以将此参数作为顶点名称的字符向量给出。
边也可以具有 ‘name’ 属性,这也受到特殊对待。 就像顶点一样,也可以根据边的名称选择边,例如,在 delete_edges
和其他函数中。
我们在此处指出,顶点名称也可以用于选择边。 形式为 ‘from|to
’,其中 ‘from
’ 和 ‘to
’ 是顶点名称,选择一个从 ‘from
’ 到 ‘to
’ 的单个(可能是有向的)边。 这两种形式也可以在同一个边选择器中混合使用。
其他属性定义了可视化参数,有关详细信息,请参见 igraph.plotting
。
属性值可以设置为任何 R 对象,但请注意,将图存储在某些文件格式中可能会导致复杂属性值的丢失。 如果使用 save
和 load
存储/检索图,则将保留所有属性值。
igraph 提供了三种不同的可视化方法。 第一个是 plot.igraph
函数。 (实际上,您不需要编写 plot.igraph
, plot
就足够了。 此函数使用常规 R 图形,可以与任何 R 设备一起使用。
第二个函数是 tkplot
,它使用 Tk GUI 进行基本的交互式图操作。 (Tk 非常消耗资源,因此不要尝试将其用于非常大的图。)
第三种方法需要 rgl
包并使用 OpenGL。 有关详细信息,请参见 rglplot
函数。
在开始绘制图之前,请确保您已阅读 igraph.plotting
。
igraph 可以处理各种图文件格式,通常用于读取和写入。 我们建议您为图使用 GraphML 文件格式,除非图太大。 对于大图,建议使用更简单的格式。 有关详细信息,请参见 read_graph
和 write_graph
。
igraph 的主页位于 https://igraph.cn。 特别是请参阅文档部分。 如果您有任何问题或意见,请加入讨论论坛: https://igraph.discourse.group。