In [1]:
import numpy as np
from scipy import integrate
import time
In [2]:
import plotly.plotly as py
import plotly.tools as tls
from plotly.graph_objs import *

stream_ids = tls.get_credentials_file()['stream_ids']
stream_ids
Out[2]:
[u'p17pxe0idb', u'ilzladc8ro', u'o72o1p08y4', u'81dygs4lct']
In [3]:
def lorentz_deriv((x, y, z), t0, sigma=10., beta=8./3, rho=28.0):
    """Compute the time-derivative of a Lorentz system."""
    return [sigma * (y - x), x * (rho - z) - y, x * y - beta * z]
In [4]:
# Number individual trajectories to integrate
N_trajectories = 1

# Choose random starting points, uniformly distributed from -15 to 15
np.random.seed(1)
x0 = -15 + 30 * np.random.random((N_trajectories, 3))
In [7]:
stream1 = dict(
    token=stream_ids[0],
    maxpoints=3000   
)

stream2 = dict(
        token=stream_ids[1]
)

trace1 = dict(
    type='scatter3d',
    x=[0],
    y=[0],
    z=[0],
    mode='lines',
    stream=stream1
)

trace2 = dict(
    type='scatter3d',
    x=[0],
    y=[0],
    z=[0],
    mode='markers',
    marker=dict(
        color="#1f77b4",
        size=12,
        symbol='circle'
    ),
    stream=stream2
)

data = [trace1, trace2]
In [8]:
layout = dict(
    title='Lorenz Attractor',
    scene=dict(
        xaxis=dict(
            autorange=False,
            range=[-25,25]
        ),
        yaxis=dict(
            autorange=False,
            range=[-35,35]
        ),
        zaxis=dict(
            autorange=False,
            range=[0,55]
        )
    ),
    margin=dict(
        l=0,
        r=0,
        t=80,
        b=0
   )
)
In [9]:
fig = dict(data=data, layout=layout)
In [10]:
py.plot(fig, validate=False, filename='lorenz-eqs-stream')
Out[10]:
u'https://plot.ly/~etpinard/470'
In [12]:
s1 = py.Stream(stream_ids[0])
s1.open()

s2 = py.Stream(stream_ids[1])
s2.open()
In [13]:
np.random.seed(1)
x0 = -15 + 30 * np.random.random((1, 3))[0]

while True:
    
    t = np.linspace(0, 4, 1000)
    X_t = integrate.odeint(lorentz_deriv, x0, t)
    
    for x_t in X_t:
        
        s_data1 = dict(
            type='scatter3d',
            x=x_t[0],
            y=x_t[1],
            z=x_t[2]
        )

        s_data2 = dict(
            type='scatter3d',
            x=[x_t[0]],
            y=[x_t[1]],
            z=[x_t[2]]
        )

        s1.write(s_data1, validate=False)
        s2.write(s_data2, validate=False)

        time.sleep(0.05)
        
    x0 = X_t[-1,:]

s.close()
---------------------------------------------------------------------------
KeyboardInterrupt                         Traceback (most recent call last)
<ipython-input-13-b3d903434b58> in <module>()
     26         s2.write(s_data2, validate=False)
     27 
---> 28         time.sleep(0.05)
     29 
     30     x0 = X_t[-1,:]

KeyboardInterrupt: 
In [ ]: