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

Zsailer
160 Stars 20 Forks MIT License 51 Commits 6 Opened issues

Description

Draw interactive NetworkX graphs with Altair

Services available

!
?

Need anything else?

Contributors list

# 43,833
Python
pandas
altair
jupyter...
30 commits
# 128,994
HTML
pandas
altair
Tensorf...
8 commits

nx_altair

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.

Examples

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!

viz.interactive()

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!

viz.interactive()

Install

To install from PyPI:

pip install nx_altair

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

pip install -e .

Contributing

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
    draw
    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.