0
0
Matplotlibdata~20 mins

FuncAnimation for dynamic plots in Matplotlib - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
FuncAnimation Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of a simple FuncAnimation example
What will be the output of this code snippet that uses FuncAnimation to animate a sine wave?
Matplotlib
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation

fig, ax = plt.subplots()
x = np.linspace(0, 2*np.pi, 100)
line, = ax.plot(x, np.sin(x))

def update(frame):
    line.set_ydata(np.sin(x + frame / 10))
    return line,

ani = FuncAnimation(fig, update, frames=20, blit=True)
plt.show()
AA static sine wave plot with no animation
BA sine wave plot that raises a TypeError during animation
CAn animated sine wave that shifts horizontally over 20 frames
DAn animated cosine wave shifting vertically over 20 frames
Attempts:
2 left
💡 Hint
Think about what the update function changes in each frame.
data_output
intermediate
1:00remaining
Number of frames executed in FuncAnimation
Given this FuncAnimation setup, how many frames will be executed in total?
Matplotlib
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation

fig = plt.figure()
frames = range(5, 15)

ani = FuncAnimation(fig, lambda f: f, frames=frames)

frame_count = len(list(frames))
print(frame_count)
A15
B9
C5
D10
Attempts:
2 left
💡 Hint
Count how many numbers are in the range from 5 to 15 (exclusive).
🔧 Debug
advanced
2:00remaining
Identify the error in this FuncAnimation code
What error will this code raise when run?
Matplotlib
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation

fig, ax = plt.subplots()
line, = ax.plot([0, 1], [0, 1])

def update(frame):
    line.set_ydata([frame, frame + 1])

ani = FuncAnimation(fig, update, frames=range(5), blit=True)
plt.show()
ARuntimeError: The animation function must return an iterable of artists
BNo error, animation runs correctly
CValueError: x and y must have same first dimension
DTypeError: 'NoneType' object is not iterable
Attempts:
2 left
💡 Hint
Check what the update function returns.
🧠 Conceptual
advanced
1:00remaining
Understanding blit parameter in FuncAnimation
What is the main effect of setting blit=True in FuncAnimation?
AIt improves animation performance by only redrawing changed parts
BIt disables animation and shows only the first frame
CIt causes the animation to loop infinitely without stopping
DIt changes the animation speed to be slower
Attempts:
2 left
💡 Hint
Think about what 'blitting' means in graphics.
🚀 Application
expert
3:00remaining
Predict the final y-data after animation
Consider this FuncAnimation code that updates a line's y-data by adding the frame number. What will be the y-data of the line after the last frame (frame=4)?
Matplotlib
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation

fig, ax = plt.subplots()
x = np.array([1, 2, 3])
y = np.array([0, 0, 0])
line, = ax.plot(x, y)

def update(frame):
    new_y = y + frame
    line.set_ydata(new_y)
    return line,

ani = FuncAnimation(fig, update, frames=5, blit=True)

# After animation ends, what is line.get_ydata()?
A[1 2 3]
B[4 4 4]
C[10 10 10]
D[0 0 0]
Attempts:
2 left
💡 Hint
The last frame number is 4, and y is added to frame in update.