Attaching play buttons to sliders¶
Note
The labels will not update as that requires a Python kernel.
If you are working in Jupyter then you can add
ipywidgets.Play widgets
to the sliders for any of the interactive_*
functions.
In this tutorial all the functions are scatter
but this will work for plot
, hist
, imshow
, etc…
Specifying Which Sliders Get Play buttons¶
%matplotlib ipympl
import matplotlib.pyplot as plt
import numpy as np
from mpl_interactions import *
Boolean: All get a button¶
N = 50
x = np.random.rand(N)
def f_y(x, tau, beta):
return np.sin(x*tau)**2 + np.random.randn(N)*.01*beta
fig, ax, controls = interactive_scatter(x, f_y,
tau = (1, 2*np.pi, 100),
beta = (0, 2),
play_buttons = True,
display = False)
display(controls)
List: Choose by name¶
fig, ax, controls = interactive_scatter(x, f_y,
tau = (1, 2*np.pi, 100),
beta = (0, 2),
play_buttons = ['tau'],
display = False)
display(controls)
defaultdict: Specify by name and choose default¶
If you have many parameters and you want the most, but not all, of them to have a Play button then you should use a defaultdict`
from collections import defaultdict
def f(x, **kwargs):
return x
play_buttons = defaultdict(lambda: True)
play_buttons['tau'] = False
fig, ax, controls = interactive_scatter(x, f,
tau = (1, 2*np.pi, 100),
beta = (0, 2),
zeta = (0,1),
psi = (0,1),
play_buttons = play_buttons,
display = False)
display(controls)
Choosing Play Button Position¶
The play_button_pos
argument controls where the Play button will be displayed relative to the slider. Valid options are
'left'
and 'right'
. Play buttons on the right was chosen as default because of the potential for slider misalignment
if not all sliders have a Play button. (If you have a better idea for how to do
this please open an issue
and suggest how to improve this)
from collections import defaultdict
def f(x, **kwargs):
return x
play_buttons = defaultdict(lambda: True)
play_buttons['tau'] = False
fig, ax, controls = interactive_scatter(x, f,
tau = (1, 2*np.pi, 100),
beta = (0, 2),
zeta = (0,1),
psi = (0,1),
play_buttons = play_buttons,
play_button_pos = 'left',
display = False)
display(controls)