I am trying to create an interactive graph matplotlib multidimensional function with three parameters. The problem is that the parameters can vary in a very wide range, so I would prefer not to use the sliders, but directly enter the value that I would like. Basically, I would like to recreate the canonical example below, where instead of sliders I need text fields in which I can enter parameters
import numpy as np import matplotlib.pyplot as plt from matplotlib.widgets import Slider, Button, RadioButtons fig, ax = plt.subplots() plt.subplots_adjust(bottom=0.35) t = np.arange(0.0, 1.0, 0.001) a0 = 5 f0 = 3 s = a0*np.sin(2*np.pi*f0*t) l, = plt.plot(t,s, lw=2, color='red') plt.axis([0, 1, -10, 10]) ax.plot(t,t) axcolor = 'lightgoldenrodyellow' axamp = plt.axes([0.25, 0.25, 0.65, 0.03], axisbg=axcolor) axfreq = plt.axes([0.25, 0.2, 0.65, 0.03], axisbg=axcolor) sfreq = Slider(axfreq, 'Freq', 0.1, 30.0, valinit=f0) samp = Slider(axamp, 'Amp', 0.1, 10.0, valinit=a0) 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) resetax = plt.axes([0.8, 0.025, 0.1, 0.04]) button = Button(resetax, 'Reset', color=axcolor, hovercolor='0.975') def reset(event): sfreq.reset() samp.reset() button.on_clicked(reset) plt.show()