如何解决努力使小部件在python中工作
我不知道为什么,但是我真的很努力地让小部件在python中正常工作。我尝试查看有关如何使用它们的示例,但我不知道如何推断该示例以使其与我的代码一起使用。我试图得到一个图来显示小部件,以便类型,频率,相位和其他变量调整图形本身。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.widgets as widgets
from scipy import signal
from matplotlib.widgets import RadioButtons
A = 1
ang_f = 5
t = np.linspace(0,4*np.pi,1000)
phase = 0
s0 = A*np.sin(ang_f*t + phase)
s2 = A*signal.sawtooth(ang_f*t + phase)
s1 = A*signal.square(ang_f*t + phase)
fig,ax = plt.subplots()
l,= ax.plot(t,s1,lw=2,color='red')
plt.subplots_adjust(left=0.4)
def sinf(x,omega):
return np.sin(omega*x)
def sliderCallback(val):
# """ 'val' is the current value selected by the slider
# Recalculate sine values with val as the frequency """
axesHandle.set_ydata(sinf(x,val))
plt.draw() # Redraw the axes
def clickcallback(val):
# 'val' is the current value selected by the slider
# Recalculate sine values with val as the frequency
axesHandle.set_ydata(sinf(x,val))
plt.draw() # Redraw the axes
def closeCallback(event):
plt.close('all') # Close all open figure windows
fig = plt.figure(figsize=(7,5))
ax = plt.axes([0.1,0.2,0.6,0.7])
axesHandle,= plt.plot(x,sinf(x,1),color='red')
# Add axis to contain the slider
fax = plt.axes([0.1,0.04,0.35,0.03]) # Frequency
tax = plt.axes([0.1,0.12,0.03]) # Time
sax_3 = plt.axes([0.60,0.1,0.03]) # Number of points
pax = plt.axes([0.60,0.05,0.03]) # Phase
rax = plt.axes([0.85,0.65,0.15]) # Type
bax = plt.axes([0.85,0.85,0.1]) # Close
pointshandle = widgets.Slider(sax_3,'Number of points',1,200,valfmt='%0.0f')
pointshandle.on_changed(sliderCallback)
graphchoice = widgets.RadioButtons(rax,('Sine','Squarewave','Sawtooth'))
graphchoice.on_clicked(clickcallback)
freqhandle = widgets.Slider(fax,'Frequancy (Hz)',5,valinit=1)
freqhandle.on_changed(sliderCallback)
phasehandle = widgets.Slider(pax,'Phase',0*np.pi,valinit=0)
phasehandle.on_changed(sliderCallback)
timehandle = widgets.Slider(tax,'Time (s)',10,valinit=1)
timehandle.on_changed(sliderCallback)
buttonHandle = widgets.Button(bax,'Close')
buttonHandle.on_clicked(closeCallback)
def hzfunc(label):
hzdict = {'Sine': s0,'Squarewave': s1,'Sawtooth': s2}
ydata = hzdict[label]
l.set_ydata(ydata)
plt.draw()
graphchoice.on_clicked(hzfunc)
我真的迷路了,因此,将我带入正确道路的任何提示都将不胜感激,因为atm如此混乱。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。