Need help with nx_altair?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

173 Stars 20 Forks MIT License 51 Commits 7 Opened issues


Draw interactive NetworkX graphs with Altair

Services available


Need anything else?

Contributors list

# 41,044
30 commits
# 142,031
8 commits


Draw NetworkX graphs with Altair

Gitter chat

nx_altair offers a similar draw API to NetworkX but returns Altair Charts instead.

If you'd like to contribute, join the Gitter chatroom and share your ideas! Also, checkout the to-do list below.


If you'd like to start playing with nx_altair, download this notebook!

Simple graph

import networkx as nx
import nx_altair as nxa

Generate a random graph

G = nx.fast_gnp_random_graph(n=20, p=0.25)

Compute positions for viz.

pos = nx.spring_layout(G)

Draw the graph using Altair

viz = nxa.draw_networkx(G, pos=pos)

Show it as an interactive plot!


Leverage Altair

Customize the visualization

nx_altair also supports many of the same arguments from NetworkX for styling your network--with an Altair twist! Map visualization attributes in a declarative manner.

import numpy as np

Add weights to nodes and edges

for n in G.nodes(): G.nodes[n]['weight'] = np.random.randn()

for e in G.edges(): G.edges[e]['weight'] = np.random.uniform(1, 10)

Draw the graph using Altair

viz = nxa.draw_networkx( G, pos=pos, node_color='weight', cmap='viridis', width='weight', edge_color='black', )

Show it as an interactive plot!



To install from PyPI:

pip install nx_altair

To install for development, clone this repos and install using pip

pip install -e .


We welcome pull requests! If you find a bug, we'd love for you to submit a PR. If you're not sure how to do that, check out this simple guide.

If you have a feature request, please open an issue or submit a PR!

Todo list

A list of things to-do (good ideas for PRs).

  • [ ] Add
    method that mirrors networkx (easy)
  • [ ] Node color scale vmix, vmax (easy)
  • [ ] Edge color scale vmix, vmax (easy)
  • [ ] Node labels (medium)
  • [ ] Edge labels (medium)
  • [ ] Mouse-hover interactivity (medium)
  • [ ] Arrows for edges (hard)
  • [ ] Support for large (>1000 edge) networks (hard)
  • [ ] Force-directed interactivity (very hard---beyond altair's current support).

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.