Jupyter notebook animation for beginners

 

This line of code shows how to create an animation graph within jupyter


Have you ever want to do 2D and 3D animation in jupyter but jupyter animation not working and wonder how to make jupyter notebook interactive fear not i am here to help just read this article to learn.


add the line
 %matplotlib notebook  # for inbuilt animation in jupyter 
add the line before your code
%matplotlib qt # for a pop-up window to show graph and animation like pycharm compiler 

Please share this blog if it helps you

%matplotlib notebook  #this line creates a graph within python jupyter

import numpy as np

import matplotlib.pyplot as plt

from matplotlib.animation import FuncAnimation


fig, ax = plt.subplots()

xdata, ydata = [], []

ln, = plt.plot([], [], 'ro')


def init():

    ax.set_xlim(0, 2*np.pi)

    ax.set_ylim(-1, 1)

    return ln,


def update(frame):

    xdata.append(frame)

    ydata.append(np.sin(frame))

    ln.set_data(xdata, ydata)

    return ln,


ani = FuncAnimation(fig, update, frames=np.linspace(0, 2*np.pi, 128),

                    init_func=init, blit=True)

plt.show()



Code shows how to create a popup graph animation in python jupyter


 %matplotlib qt  # this line will create a pop-up graph like pycharm animation

import numpy as np

import matplotlib.pyplot as plt

from matplotlib.animation import FuncAnimation


fig, ax = plt.subplots()

xdata, ydata = [], []

ln, = plt.plot([], [], 'ro')


def init():

    ax.set_xlim(0, 2*np.pi)

    ax.set_ylim(-1, 1)

    return ln,


def update(frame):

    xdata.append(frame)

    ydata.append(np.sin(frame))

    ln.set_data(xdata, ydata)

    return ln,


ani = FuncAnimation(fig, update, frames=np.linspace(0, 2*np.pi, 128),

                    init_func=init, blit=True)

plt.show()




3D graph inbuilt animation in jupyter

%matplotlib notebook
import numpy as np
import matplotlib.pyplot as plt
import mpl_toolkits.mplot3d.axes3d as p3
import matplotlib.animation as animation

# Fixing random state for reproducibility
np.random.seed(19680801)


def Gen_RandLine(length, dims=2):
    """
    Create a line using a random walk algorithm

    length is the number of points for the line.
    dims is the number of dimensions the line has.
    """
    lineData = np.empty((dims, length))
    lineData[:, 0] = np.random.rand(dims)
    for index in range(1, length):
        # scaling the random numbers by 0.1 so
        # movement is small compared to position.
        # subtraction by 0.5 is to change the range to [-0.5, 0.5]
        # to allow a line to move backwards.
        step = ((np.random.rand(dims) - 0.5) * 0.1)
        lineData[:, index] = lineData[:, index - 1] + step

    return lineData


def update_lines(num, dataLines, lines):
    for line, data in zip(lines, dataLines):
        # NOTE: there is no .set_data() for 3 dim data...
        line.set_data(data[0:2, :num])
        line.set_3d_properties(data[2, :num])
    return lines

# Attaching 3D axis to the figure
fig = plt.figure()
ax = p3.Axes3D(fig)

# Fifty lines of random 3-D lines
data = [Gen_RandLine(25, 3) for index in range(50)]

# Creating fifty line objects.
# NOTE: Can't pass empty arrays into 3d version of plot()
lines = [ax.plot(dat[0, 0:1], dat[1, 0:1], dat[2, 0:1])[0] for dat in data]

# Setting the axes properties
ax.set_xlim3d([0.0, 1.0])
ax.set_xlabel('X')

ax.set_ylim3d([0.0, 1.0])
ax.set_ylabel('Y')

ax.set_zlim3d([0.0, 1.0])
ax.set_zlabel('Z')

ax.set_title('3D Test')

# Creating the Animation object
line_ani = animation.FuncAnimation(fig, update_lines, 25, fargs=(data, lines),
                                   interval=50, blit=False)

plt.show()


3D graph pop-up animation in jupyter
%matplotlib qt
import numpy as np
import matplotlib.pyplot as plt
import mpl_toolkits.mplot3d.axes3d as p3
import matplotlib.animation as animation

# Fixing random state for reproducibility
np.random.seed(19680801)


def Gen_RandLine(length, dims=2):
    """
    Create a line using a random walk algorithm

    length is the number of points for the line.
    dims is the number of dimensions the line has.
    """
    lineData = np.empty((dims, length))
    lineData[:, 0] = np.random.rand(dims)
    for index in range(1, length):
        # scaling the random numbers by 0.1 so
        # movement is small compared to position.
        # subtraction by 0.5 is to change the range to [-0.5, 0.5]
        # to allow a line to move backwards.
        step = ((np.random.rand(dims) - 0.5) * 0.1)
        lineData[:, index] = lineData[:, index - 1] + step

    return lineData


def update_lines(num, dataLines, lines):
    for line, data in zip(lines, dataLines):
        # NOTE: there is no .set_data() for 3 dim data...
        line.set_data(data[0:2, :num])
        line.set_3d_properties(data[2, :num])
    return lines

# Attaching 3D axis to the figure
fig = plt.figure()
ax = p3.Axes3D(fig)

# Fifty lines of random 3-D lines
data = [Gen_RandLine(25, 3) for index in range(50)]

# Creating fifty line objects.
# NOTE: Can't pass empty arrays into 3d version of plot()
lines = [ax.plot(dat[0, 0:1], dat[1, 0:1], dat[2, 0:1])[0] for dat in data]

# Setting the axes properties
ax.set_xlim3d([0.0, 1.0])
ax.set_xlabel('X')

ax.set_ylim3d([0.0, 1.0])
ax.set_ylabel('Y')

ax.set_zlim3d([0.0, 1.0])
ax.set_zlabel('Z')

ax.set_title('3D Test')

# Creating the Animation object
line_ani = animation.FuncAnimation(fig, update_lines, 25, fargs=(data, lines),
                                   interval=50, blit=False)

plt.show()







Post a Comment

0 Comments