Netgraph
Publication-quality network visualisations in python
Netgraph is a Python library that aims to complement existing network analysis libraries such as such as networkx, igraph, and graph-tool with publication-quality visualisations within the Python ecosystem. To facilitate a seamless integration, Netgraph supports a variety of input formats, including networkx, igraph, and graph-tool Graph
objects. Netgraph implements numerous node layout algorithms and several edge routing routines. Uniquely among Python alternatives, it handles networks with multiple components gracefully (which otherwise break most node layout routines), and it post-processes the output of the node layout and edge routing algorithms with several heuristics to increase the interpretability of the visualisation (reduction of overlaps between nodes, edges, and labels; edge crossing minimisation and edge unbundling where applicable). The highly customisable plots are created using Matplotlib, and the resulting Matplotlib objects are exposed in an easily queryable format such that they can be further manipulated and/or animated using standard Matplotlib syntax. The visualisations can also be altered interactively: nodes and edges can be added on-the-fly through hotkeys, positioned using the mouse, and (re-)labelled through standard text-entry.
Citing Netgraph
If you use Netgraph in a scientific publication, I would appreciate citations to the following paper:
Brodersen, P. J. N., (2023). Netgraph: Publication-quality Network Visualisations in Python. Journal of Open Source Software, 8(87), 5372, https://doi.org/10.21105/joss.05372
Bibtex entry:
@article{Brodersen2023,
doi = {10.21105/joss.05372},
url = {https://doi.org/10.21105/joss.05372},
year = {2023}, publisher = {The Open Journal},
volume = {8},
number = {87},
pages = {5372},
author = {Paul J. N. Brodersen},
title = {Netgraph: Publication-quality Network Visualisations in Python},
journal = {Journal of Open Source Software},
}
Contributing & Support
If you get stuck, please raise an issue on GitHub, or post a question
on StackOverflow using the netgraph
tag. In either case, include
any relevant code and data in a minimal, reproducible example. If
applicable, make a sketch of the desired result with pen and paper,
take a picture, and append it to the issue.
Bug reports are, of course, always welcome. Please make sure to include the full error trace.
If you submit a pull request that fixes a bug or implements a cool feature, I will probably worship the ground you walk on for the rest of the week. Probably.