#!/usr/bin/env python
# coding: utf-8
# #
Running Lightning without a server
# ##
Setup
# In[1]:
from lightning import Lightning
from numpy import random
# ## Start local mode
# Lightning was designed as a API-based visualization server, to which data is posted, and from which visualizations are returned. However, there are many use cases where operating without a server is desirable. For example, when doing data analysis locally, or when we're using notebooks like Jupyter.
# For this use case, Lightning offers a "local" mode that doesn't require a server, or even internet access. This is a particularly easy way to get started with Lightning because it only requires a client installation! Once you've installed the Python client with `pip`, all you need to do is set local mode to true.
# In[2]:
lgn = Lightning(ipython=True, local=True)
# ##
Generate a plot
# Then generate a plot. It'll automatically embed in the notebook (because we set `ipython=True`). Local plots are interactive just like plots rendered using the server! Try zooming and panning.
# In[3]:
series = random.randn(5, 50)
lgn.line(series)
# Performance can often be a little better for local plots with large data sets, because there is no data transfer.
# In[4]:
x = random.randn(1000)
y = random.randn(1000)
v = random.randn(1000)
lgn.scatter(x, y, alpha=0.5, values=v, colormap='Reds')
# And most plot types are available. Here's a force visualization.
# In[5]:
mat = random.rand(100,100)
mat[mat<0.97] = 0
lgn.force(mat)
# And here's a map!
# In[6]:
states = ["NA", "AK", "AL", "AR", "AZ", "CA", "CO","CT",
"DC","DE","FL","GA","HI","IA","ID","IL","IN",
"KS","KY","LA","MA","MD","ME","MI","MN","MO",
"MS","MT","NC","ND","NE","NH","NJ","NM","NV",
"NY","OH","OK","OR","PA","RI","SC","SD","TN",
"TX","UT","VA","VI","VT","WA","WI","WV","WY"]
values = random.randn(len(states))
lgn.map(states, values, colormap='Greens')
# ##
Saving to html
# You can also save a visualization to html, which is useful if you are using local mode without a notebook. First create the visualization.
# In[7]:
viz = lgn.scatter(random.randn(10), random.randn(10))
# Then save using `viz.save_html('filename')`
# ##
Limitations
# Some visualizations are not available in local mode, for example, plots that use images (though we are working on expanding coverage).
# In[8]:
lgn.image(random.randn(25,25))
# And although full interactivity is supported, there is currently no way to extract user selections from a visualization. For that, take a look at the various ways of running Lightning with a server!