Skip to content

nxviz: Composable and rational network visualizations in matplotlib

nxviz is a package for building rational network visualizations using matplotlib as a backend. Inspired heavily by the principles espoused in the grammar of graphics, nxviz provides ways to compose a graph visualization together by adhering to the following recipe:

  1. Prioritize node placement, mapping data to position and visual properties,
  2. Draw in edges, mapping data to visual properties,
  3. Add in annotations and highlights on the graph.

nxviz is simultaneously a data visualization research project, art project, and declarative data visualization tool. We hope you enjoy using it to build beautiful graph visualizations.


Official Releases

nxviz is available on PyPI:

bash pip install nxviz

It's also available on conda-forge:

bash conda install -c conda-forge nxviz


Pre-releases are done by installing directly from git:

bash pip install git+


To make a Circos plot:


We assume you have a graph G that is a NetworkX graph object.

In this example, all nodes possess the "group" and "value" node attributes

where "group" is categorical and "value" is continuous,

and all edges have the "edge_value" node attribute as well.

import nxviz as nv ax = nv.circos( G, group_by="group", sort_by="value", node_color_by="group", edge_alpha_by="edge_value" )

nv.annotate.circos_group(G, group_by="group") ```

For more examples, including other plots that can be made, please see the examples gallery on the docs.