常见问题 ¶
常见问题¶
我尝试安装 *igraph* 但遇到了错误!我该怎么办?¶
首先,查看我们的 安装说明,包括故障排除部分。如果这不能解决您的问题,请通过 igraph 论坛 联系我们。我们将尽力帮助您!
我已经安装了 *igraph*。我现在该做什么?¶
先看看 快速入门!然后,您可以浏览我们的 示例 中的更多示例,阅读关于图 生成、分析 和 可视化 的详细说明,并查看完整的 API 文档。
我以为 *igraph* 是一个 R 包,这是同一个包吗?¶
*igraph* 是一个用 C 编写的软件库,具有多种编程语言的接口,例如 R、Python 和 Mathematica。许多函数在不同语言中具有相似的名称和功能,但匹配并不完美,因此您偶尔会发现某些函数在一个语言中支持但在另一种语言中不支持。有关如何请求功能的说明,请参见下面的常见问题解答。
我想使用 *igraph* 但不懂 Python,该怎么办?¶
*igraph* 可以从多种编程语言中使用,例如 C、R、Python 和 Mathematica。虽然确切的函数名称略有不同,但大多数功能是共享的,因此如果您可以编写其中任何一种代码,则可以使用 *igraph*:只需参考我们 主页 上相应语言的安装说明。
如果您根本不熟悉编程,或者如果您不懂任何 Python 但仍想使用 *igraph* 的 Python 接口,则应首先学习 Python。网上有很多资源,包括在线课程、视频、教程等。*igraph* 不使用很多高级的 Python 特定技巧,因此一旦您可以使用诸如 pandas
或 matplotlib
等标准模块,*igraph* 应该很容易上手。
我希望有一个用于操作/算法 X 的函数,您可以添加它吗?¶
我们正在不断扩展 *igraph* 以包含新功能,并且来自我们社区的请求是指导这些努力的最佳方式。当然,我们只是一些人,因此我们无法保证每个晦涩的社区检测算法都将包含在该软件包中。请在我们的 论坛 上开设一个新帖子来描述您的请求。如果您的请求是调整现有的函数或特定的代码片段,您可以直接打开一个 GitHub issue(确保类似的问题尚不存在!- 如果存在,请在那里发表评论。)
*igraph* 与类似的软件包(networkx,graph-tool)有什么区别?¶
所有这些软件包都专注于图/网络分析。
警告
以下差异和相似之处在撰写本文时(2022 年 1 月)被认为是正确的。如果您发现不正确或过时的信息,请打开一个 Github issue,我们将对其进行更新。
差异
*igraph* 支持**多种编程语言**(例如 C、Python、R、Mathematica)。networkx 和 graph-tool 仅支持 Python。
*igraph* 的核心库是用 C 编写的,这使得它通常比 networkx 更快。graph-tool 是用大量模板化的 C++ 编写的,因此它可以像 *igraph* 一样快,但支持的架构更少。编译 graph-tool 可能比 *igraph* 花费的时间更长(几小时与大约一分钟)。
*igraph* 顶点是从 0 向上以连续数值 ID 排序的,并且具有可选的“顶点名称”。networkx 节点由它们的名称定义而不是排序。
边也是如此,在 *igraph* 中按整数 ID 排序,在 networkx 中则不是。
*igraph* 可以使用
matplotlib
绘制图形,并且对 plotly 有实验性支持,因此它可以生成动画、笔记本小部件和交互式绘图(例如,缩放、平移)。networkx 具有出色的matplotlib
支持,但没有 plotly 支持。graph-tool 仅支持通过 Cairo 和 GTK+ 的静态图像。在设计方面,当您有一个相对静态的网络想要分析时,*igraph* 确实很出色,但对于不断获得和失去顶点和边的非常动态的网络,它可能会遇到困难。随着我们改进 *igraph* 的核心 C 库,这种情况可能会在不久的将来发生变化。目前,networkx 可能更适合模拟这种高度动态的图形。
相似之处
许多任务都可以使用 *igraph*、graph-tool 和 networkx 同等地实现。
所有这些都可以读写多种图形文件格式。
所有这些都可以可视化图形,具有不同的优点和缺点。
注意
*igraph* 包括从/到 networkx 的转换函数,因此您可以使用 *igraph* 创建和操作网络,然后稍后将其转换为 networkx 或 graph-tool(如果您需要)。反之亦然,您可以在 networkx 或 graph-tool 中加载一个图形,如果需要更快的速度、特定的算法、matplotlib 动画等,可以将该图形转换为 *igraph* 对象。您甚至可以使用 *igraph* 将图形从 networkx 转换为 graph-tool,反之亦然!
我想为 *igraph* 做贡献,我从哪里开始?¶
感谢您的热情!*igraph* 是回馈开源社区或仅仅学习图形的绝佳机会。根据您在软件工程、编程、沟通或数据科学方面的技能,某些任务可能比其他任务更适合。
如果您想立即开始编码,请查看 GitHub issues,看看您是否找到了一个听起来足够简单并且激发您兴趣的问题,然后写一条消息说您有兴趣承担它。我们将尽快回复并指导您下一步的步骤。
C 核心库还有各种 “theory issues”。您可以通过研究图形文献或找到图形问题的解决方案,在没有任何编程知识的情况下为这些问题做出贡献。一旦理论障碍被克服,其他人就可以继续进行编码部分:真正的团队合作!
如果这些看起来都不可行,或者如果您有特定的想法,或者仍然想以纯编程以外的其他方式做出贡献,请在我们的 论坛 上联系我们,我们将提出一些想法。