Skip to main content

Draw NetworkX graphs with Altair

Project description

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

  • <input type="checkbox" disabled="" /> Add draw method that mirrors networkx (easy)
  • <input type="checkbox" disabled="" /> Node color scale vmix, vmax (easy)
  • <input type="checkbox" disabled="" /> Edge color scale vmix, vmax (easy)
  • <input type="checkbox" disabled="" /> Node labels (medium)
  • <input type="checkbox" disabled="" /> Edge labels (medium)
  • <input type="checkbox" disabled="" /> Mouse-hover interactivity (medium)
  • <input type="checkbox" disabled="" /> Arrows for edges (hard)
  • <input type="checkbox" disabled="" /> Support for large (>1000 edge) networks (hard)
  • <input type="checkbox" disabled="" /> Force-directed interactivity (very hard---beyond altair's current support).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for nx-altair, version 0.1.6
Filename, size File type Python version Upload date Hashes
Filename, size nx_altair-0.1.6-py3-none-any.whl (7.9 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size nx_altair-0.1.6.tar.gz (8.5 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page