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')
Connected to server at 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)