Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Interactive matplotlib using ipywidgets

I want to implement an interactive plot using Matplotlib and ipywidgets in IPython (python3). So, how I can do this efficiently (change smoothly without delay)?

And another question is why this code works?!

from ipywidgets import *
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

x = np.linspace(0, 2 * np.pi)

def update(w = 1.0):
    fig = plt.figure()
    ax = fig.add_subplot(1, 1, 1)
    ax.plot(x, np.sin(w * x))

    fig.canvas.draw()

interact(update);

enter image description here

But, this doesn't work?!

from ipywidgets import *
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

x = np.linspace(0, 2 * np.pi)
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
line, = ax.plot(x, np.sin(x))

def update(w = 1.0):
    line.set_ydata(np.sin(w * x))
    fig.canvas.draw()

interact(update);

enter image description here

like image 611
Yas Avatar asked Oct 19 '16 05:10

Yas


People also ask

What is interact in Ipywidgets?

The interact function ( ipywidgets. interact ) automatically creates user interface (UI) controls for exploring code and data interactively. It is the easiest way to get started using IPython's widgets.

Can matplotlib be interactive?

You can make a plot in matplotlib, add interactive functionality with plugins that utilize both Python and JavaScript, and then render it with D3. mpld3 includes built-in plugins for zooming, panning, and adding tooltips (information that appears when you hover over a data point).


1 Answers

The second approach is the right one for the notebook backend

%matplotlib notebook

Or with ipympl.

However, it won't work with the inline backend which does not update the plot.

like image 153
Quant Avatar answered Oct 09 '22 19:10

Quant