Noter
Cliquez ici pour télécharger l'exemple de code complet
Alignement des curseurs sur des valeurs discrètes #
Vous pouvez aligner les valeurs du curseur sur des valeurs discrètes à l'aide de l' valstep
argument.
Dans cet exemple, le curseur Freq est contraint d'être des multiples de pi, et le curseur Amp utilise un tableau comme valstep
argument pour échantillonner de manière plus dense la première partie de sa plage.
Voir Curseur pour un exemple d'utilisation d'un Slider
pour contrôler un seul flotteur.
Voir Seuil d'une image avec RangeSlider pour un exemple d'utilisation de a RangeSlider
pour définir une plage de valeurs.
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider, Button
t = np.arange(0.0, 1.0, 0.001)
a0 = 5
f0 = 3
s = a0 * np.sin(2 * np.pi * f0 * t)
fig, ax = plt.subplots()
fig.subplots_adjust(bottom=0.25)
l, = ax.plot(t, s, lw=2)
ax_freq = fig.add_axes([0.25, 0.1, 0.65, 0.03])
ax_amp = fig.add_axes([0.25, 0.15, 0.65, 0.03])
# define the values to use for snapping
allowed_amplitudes = np.concatenate([np.linspace(.1, 5, 100), [6, 7, 8, 9]])
# create the sliders
samp = Slider(
ax_amp, "Amp", 0.1, 9.0,
valinit=a0, valstep=allowed_amplitudes,
color="green"
)
sfreq = Slider(
ax_freq, "Freq", 0, 10*np.pi,
valinit=2*np.pi, valstep=np.pi,
initcolor='none' # Remove the line marking the valinit position.
)
def update(val):
amp = samp.val
freq = sfreq.val
l.set_ydata(amp*np.sin(2*np.pi*freq*t))
fig.canvas.draw_idle()
sfreq.on_changed(update)
samp.on_changed(update)
ax_reset = fig.add_axes([0.8, 0.025, 0.1, 0.04])
button = Button(ax_reset, 'Reset', hovercolor='0.975')
def reset(event):
sfreq.reset()
samp.reset()
button.on_clicked(reset)
plt.show()
Références
L'utilisation des fonctions, méthodes, classes et modules suivants est illustrée dans cet exemple :