# Jupyter Notebook and Updating Plots

Sometimes you’ll want to visualise features of interest during the runtime of your code, e.g. plotting some performance metric against the number of iterations for some algorithm. If you’ve come from a different IDE, maybe even MATLAB, then you’ll know this is a trivial task. However, it takes a little bit of extra work to get similar behaviour in a Jupyter notebook (and a Kaggle Kernel notebook).

Here is an example of a visualisation that I find useful during runtime:

Now, if we want to have these real-time updates to our plots in Jupyter (including Kaggle Kernel notebooks), we need to import display and clear_output from IPython.display:

import numpy as np
import matplotlib.pyplot as plt
from IPython.display import display, clear_output

Now we can update our plots with two different approaches. This approach clears the axes before plotting:

fig = plt.figure()

for i in range(20):
x = np.arange(0, i, 0.1);
y = np.sin(x)

ax.set_xlim(0, i)

ax.cla()
ax.plot(x, y)
display(fig)

clear_output(wait = True)
plt.pause(0.5)

The other approach doesn’t clear the axes before plotting:

fig = plt.figure()
plt.pause(0.5)