# coding: utf-8
# #
Brushing in Lightning
# ##
Setup
# In[1]:
from lightning import Lightning
from numpy import random, zeros
# ## Connect to server
# In[2]:
lgn = Lightning(ipython=True, host='http://public.lightning-viz.org')
# ##
Adding brushing
# Several visualizations support brushing, including graphs, force networks, and scatter plots. Just set `brush=True`, then SHIFT-click and drag to select points. You should see them highlighted as you drag. We'll also turn off zooming for these examples, which can simplify our interactions with the plot.
# In[3]:
x = random.randn(100)
y = random.randn(100)
lgn.scatter(x, y, brush=True, zoom=False)
# ##
Getting selections
# If working with a Lightning server (rather than the server-less mode), we can easily extract the points we've selected.
# In[4]:
x = random.rand(100) * 10
y = random.rand(100) * 10
viz = lgn.scatter(x, y, brush=True, zoom=False)
viz
# Let's say I use the brush in the visualization above to select all points between 0 and 4. Below, I grab those points, and replot them -- note the new scale.
# In[5]:
sx, sy = viz.points()
# In[6]:
lgn.scatter(sx, sy, zoom=False)
# I can use a different accessor, `selected`, to grab the indices of the selected points.
# In[7]:
inds = viz.selected()
# Let's replot all points, but show the selected ones in a different color.
# In[8]:
groups = zeros(100)
groups[inds] = 1
lgn.scatter(x, y, group=groups, zoom=False)