import os
from lightning import Lightning
from numpy import random, asarray, linspace, corrcoef
from colorsys import hsv_to_rgb
from sklearn import datasets
import networkx as nx
lgn = Lightning(ipython=True, host='http://public.lightning-viz.org')
A random graph where every node has the same degree, with default styling.
This and other graph plots take matrices (e.g. adjacency matrices) as inputs.
We use the networkx
library to generate the graph, then get its adjancency matrix.
Double click on a point to see its neighbors (all should have 3).
Drag points to try and move the graph, it should remain tight because of the degree structure.
n = 100
G = nx.random_regular_graph(3,n)
mat = nx.adjacency_matrix(G).todense()
lgn.force(mat)
The previous network was binary (all links either 0 or 1). Here the links are weighted, which is reflected in the line widths.
G = nx.random_regular_graph(3,100)
mat = asarray(nx.adjacency_matrix(G).todense()) * (((random.rand(100,100))*5) ** 2)
lgn.force(mat)
The lobster graph, a backbone with some leaves, is colored here by node ordering.
We also set all nodes with degree less than 2 to gray.
G = nx.random_lobster(60, 0.5, 0.0, seed=44)
mat = nx.adjacency_matrix(G).todense()
n = len(G.nodes())
c = [list(asarray(hsv_to_rgb(float(x) / n , 0.8, 1.0))*255) if y > 1 else [150,150,150] for (x,y) in G.degree_iter()]
lgn.force(mat, color=c)
Here we color points (and also change their size) to indicate their degree.
Click to confirm bigger points have more connections.
G = nx.random_geometric_graph(50, 0.1)
mat = nx.adjacency_matrix(G).todense()
g = G.degree().values()
lgn.force(mat, group=g, size=(asarray(g) + 1.5)*3)
Graphs can be a useful way to look at data that doesn't neccessarily come from a graph.
Here we create a graph from a thresholded correlation matrix on data drawn from a set of clusters.
The cluster identities are clear in the resulting graph.
d, g = datasets.make_blobs(n_features=5, n_samples=50, centers=5, cluster_std=2.0, random_state=100)
c = corrcoef(d)
c[c<0.9] = 0
lgn.force(c, group=g)