2380 字
12 分钟
推荐15个图网络可视化python软件包

图网络数据可视化是将复杂的网络结构信息表示为抽象图和网络图的一种方式。本文推荐15个用于网络(Network)数据可视化的开源python软件包。前一篇关于网络可视化的推送文章详见分享17个网络(Network)数据可视化工具

  1. NetworkX

NetworkX 是一个用于创建、操作、分析和研究复杂网络结构、动态和功能的 Python 软件包。它已成为 Python 中处理图数据的标准库和大多数处理图机器学习库的基础库。

🔗  https://github.com/networkx/networkx

🔗  https://networkx.org

2. Graph-tool

Graph-tool 是一个用于图/网络数据操作和统计分析的python软件包。与大多数其他具有类似功能的 Python 包不同,Graph-tool 的核心数据结构和算法是用 C++ 实现的,大量使用了模板元编程,且严重依赖 Boost 图库。这使得它在内存使用和计算时间上的性能水平与纯 C/C++ 库相当。Graph-tool特有的功能包括:

  • 建立在统计原理的基础上,综合框架用于推断性检测,避免过度拟合并具有可解释性。
  • 支持从动态数据中重建网络。
  • 支持网络数据的不确定性量化(uncertainty quantification)。
  • 支持多种算法的 OpenMP 共享内存并行处理。
  • 高质量的网络数据可视化,包括静态和交互式的,支持动画和 matplotlib 集成。
  • 与 Netzschleuder 网络数据仓库的集成,便于加载网络数据。
  • 支持编写自定义的 C++ 扩展。

安装:https://graph-tool.skewed.de/installation.html

使用文档:https://graph-tool.skewed.de/static/doc

3. Graphviz

Graphviz 是一个开源的图数据可视化python软件包。它在网络、生物信息学、软件工程、数据库和网页设计、机器学习以及其他技术领域的可视化界面中具有重要的应用。

Graphviz 的布局程序支持使用简单文本语言来描述图或网络,并将其制作成有用的格式,例如网页中的图像和 SVG;其他文档中的 PDF 或 Postscript;或在交互式图形浏览器中显示。Graphviz 对于具体图或网络有许多有用的功能,例如颜色选项、字体、表格节点布局、线条样式、超链接和自定义形状。

软件下载:https://graphviz.org/download/

使用文档:https://graphviz.org/documentation/

4. ipycytoscape

Cytoscape 是一个用于可视化复杂网络,并可将其与任何类型的属性数据集成的开源python软件包。Cytoscape 起源于计算生物学社区,同时也是一个完整的通用图/网络可视化和分析工具。‍

Cytoscape.js‍是Cytoscape的web前端工具库,ipycytoscape是一个使用 Cytoscape.js 在 JupyterLab 和 Jupyter 笔记本中进行交互式图形可视化的组件。ipycytoscape的目标是使得熟悉Python 生态系统中已经成熟的库(如 Pandas、NetworkX 和 NumPy)的用户能够在 Jupyter 笔记本中可视化他们的图/网络数据,并通过简单的 API 和用户界面以编程或图形方式修改可视化结果。

🔗  https://github.com/cytoscape/ipycytoscape

🔗  https://js.cytoscape.org/

🔗  https://ipycytoscape.readthedocs.io/en/master/

5. ipydagred3

Dagre 是一个支持在客户端上对有向图进行布局的JavaScript 库。dagre-d3 库充当 dagre 的前端,使用 D3JS 进行实际渲染。ipydagred3是使用dagre-d3在 JupyterLab 中绘制有向无环图的python ipywidgets 库。

🔗 https://github.com/timkpaine/ipydagred3

6. ipySigma

Sigma.js是一个专为网络图可视化而设计的 JavaScript 库,利用 WebGL 实现平滑高效的渲染。它在处理大型数据集方面表现出色,提供了一系列自定义选项,可以创建动态、交互式的图形网页。ipySigma设计为jupyter lab的小组件,集成了Sigma.js 与python软件包NetworkX,能够基于Web浏览器快速渲染网络结构并进行交互式可视化。

ipySigma支持自定义图形的许多视觉变量,例如:节点颜色、大小、标签、边框、光环、象形文字、形状和边的颜色、大小、类型、标签等。

🔗 https://www.sigmajs.org/

🔗 https://github.com/medialab/ipysigma

7. Netwulf

Netwulf 是一个用于对 networkx Graph 对象进行网络可视化的一个python交互式可视化工具。Netwulf 提供了一个超简单的 API,可以直接从 Python 提示符或 Jupyter 笔记本中实现可复现的交互式网络可视化。作为研究工具,它的目的是允许快速的交互式布局/样式化。用户只需输入一个 networkx.Graph 对象,通过交互式控制台为网络添加样式,然后可以将结果下载为 PNG 格式,或将布局返回到 Python 进行进一步处理。它的构建理念是,网络操作和预处理应该以编程方式完成,但是高效生成外观吸引人的网络最好是通过交互式操作,而不需要编写代码。

🔗  https://github.com/benmaier/netwulf

8. nxviz

nxviz 是一个使用matplotlib 作为后端的图数据可视化python组件包。它提供一个可声明API,用于从 NetworkX 图对象生成美观而合理的图可视化。nxviz 提供一系列图:Circos、Arc、Matrix、Hive 和 Parallel 图。

🔗 https://github.com/ericmjl/nxviz

9. Py3plex

是一个多层复杂网络可视化和分析python库,包含用于分解、可视化和分析异构网络的最新算法。异构网络是具有额外信息分配给节点或边(或两者)的复杂网络。

🔗  https://github.com/SkBlaz/py3plex

10. Py4cytoscape

py4cytoscape是一个基于R的RCy3 Cytoscape Automation库重新创建的Python 包。其想法是允许在一种语言(R 或 Python)中编写 Cytoscape 工作流,并将其翻译成另一种语言(Python 或 R)而无需学习不同的 Cytoscape 接口。它通过其 REST API 与网络数据可视化软件Cytoscape 进行通信,提供超过 250 个函数,使得能够在独立的 Python 编程环境和 Jupyter Notebook 中控制 Cytoscape。

🔗  https://github.com/cytoscape/py4cytoscape

11. pyDot

pyDot使用纯python编写,是Graphviz的一个接口,能够解析并转存成GraphViz支持的DOT语言。

🔗 https://github.com/pydot/pydot

12. pyGraphistry

PyGraphistry 是一个面向 DataFrame 的 Python 可视化图网络AI库,用于提取、查询、转换、分析、建模和可视化大型图形,特别是与Graphistry全流程 GPU 服务器会话一起使用。GFQL 查询语言支持运行 Cypher 属性图查询语言的大部分子集,而无需外部软件,并添加了可选的 GPU 加速。通过使用可选的 graphistry[ai] 依赖项安装 PyGraphistry,可以添加图形自动化机器学习,包括自动特征工程、UMAP 和图形神经网络支持。综合起来,PyGraphistry 将从原始数据到可视化和 AI 模型的时间缩短为三行代码。

Graphistry 是唯一专为大型图网络而构建的工具。客户端的自定义 WebGL 渲染引擎一次可渲染多达 800 万个节点 + 边,并且大多数较老的客户端 GPU 平滑地支持介于 10 万和 200 万个元素之间。服务器端的 GPU 分析引擎支持更大的图网络。它通过python数据生态系统平滑地处理图网络工作流,包括 Pandas/Spark/Dask 数据框架、Nvidia RAPIDS GPU 数据框架和 GPU 图形、DGL/PyTorch 图形神经网络以及各种数据连接器。

🔗  https://github.com/graphistry/pygraphistry

13. python-igraph

python-igraph是igraph的python接口。igraph是一个使用C语言编写的用于复杂图网络分析的开源软件,提供R、Python、Mathematica 和 C/C++等编程语言接口。python-igraph支持:

  • 创建、操作和分析网络。
  • 将图网络转换为 networkx、graph-tool 支持的文件格式。
  • 使用 Cairo、matplotlib 和 plotly 绘制网络。

🔗 https://python.igraph.org/en/stable/

🔗 https://github.com/igraph/python-igraph

14. pyvis

一个创建和可视化交互式图网络的python软件包。

🔗 https://github.com/WestHealth/pyvis

15. SNAP Network Analysis Platform

SNAP是一个用于分析和处理大型网络的通用高性能系统。图由节点和图节点之间的有向/无向/多向边组成。网络是带有网络节点和/或边缘数据的图形。

SNAP 核心库使用 C++ 编写,经过优化,可实现最高性能和紧凑的图形表示。它可以轻松扩展到拥有数亿节点和数十亿边的大型网络。它能有效地处理大型图形、计算结构属性、生成规则和随机图形,并支持节点和边的属性。除了可扩展到大型图形外,SNAP 的另一个优势是图形或网络中的节点、边和属性可在计算过程中动态更改。

🔗 https://snap.stanford.edu/snap/

🔗 https://github.com/snap-stanford/snap


本公众号相关内容推荐:

推荐15个图网络可视化python软件包
https://blog.scidatalab.net/posts/推荐15个图网络可视化python软件包/
作者
Echo
发布于
2024-04-22
许可协议
CC BY-NC-SA 4.0