Observação
Clique aqui para baixar o código de exemplo completo
Ajustando os controles deslizantes para valores discretos #
Você pode ajustar os valores do controle deslizante a valores discretos usando o valstep
argumento.
Neste exemplo, o controle deslizante Freq é restrito a múltiplos de pi, e o controle deslizante Amp usa uma matriz como valstep
argumento para amostrar mais densamente a primeira parte de seu intervalo.
Consulte Slider para obter um exemplo de como usar um Slider
para controlar um único flutuador.
Consulte Limiar uma imagem com RangeSlider para obter um exemplo de uso de a RangeSlider
para definir um intervalo de valores.
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()
Referências
O uso das seguintes funções, métodos, classes e módulos é mostrado neste exemplo: