您好我在python中使用了RadioButtons小部件表格matplotlib库。
单击并选择选项后,RadioButtons将更新绘图。显然,RadioButtons与你定义的字典一致。
我需要选择"选择,选择"使用RadioButtons绘制的字段,因为我需要对所选字段进行一些后处理。
def funcplot(label):
plotdict = {'TBF': TBF, 'TTR': TTR, 'MTBF': MTBF, 'MTTR': MTTR, 'Avail': Avail}
ydata = plotdict[label]
l.set_ydata(ydata)
plt.draw()
radio.on_clicked(funcplot)
我试图从这里拉出所选字段:
radio = RadioButtons(rax, ('TBF', 'TTR', 'MTBF', 'MTTR', 'Avail'))
有没有办法从定义的函数中提取ydata?
照顾你的评论我向你们每个人致敬.-
第二部分:
感谢您的帮助,代码的第一部分恢复如下:
fig = plt.figure(figsize=(8, 6))
ax = fig.add_subplot(211, facecolor='gainsboro')
ax.set_title('Press left mouse button and drag to test')
l, = ax.plot(Time,TBF,'b-',label = 'TBF')
ax.set_ylabel('Valor')
plt.subplots_adjust(left=0.3)
axcolor = 'lightgoldenrodyellow'
rax = plt.axes([0.05, 0.7, 0.15, 0.15], facecolor=axcolor)
radio = RadioButtons(rax, ('TBF', 'TTR', 'MTBF', 'MTTR', 'Avail'))
plotdict = {'TBF': TBF, 'TTR': TTR, 'MTBF': MTBF, 'MTTR': MTTR, 'Avail': Avail}
def funcplot(label):
l.set_ydata(plotdict[label])
plt.draw()
radio.on_clicked(funcplot)
所选字段存储如下
label = radio.value_selected
y = plotdict[label]
我想要的是使用y作为SpannSelector的条目,调用和定义如下:
ax2 = fig.add_subplot(212, facecolor='gainsboro')
line2, = ax2.plot(x,y, 'bs-')
ax2.set_ylabel('Valor')
ax2.set_xlabel('Horas')
def onselect(xmin, xmax):
indmin, indmax = np.searchsorted(x, (xmin, xmax))
indmax = min(len(x) - 1, indmax)
thisx = x[indmin:indmax]
thisy = y[indmin:indmax]
line2.set_data(thisx, thisy)
ax2.set_xlim(thisx[0], thisx[-1])
ax2.set_ylim(thisy.min(), thisy.max())
fig.canvas.draw()
# set useblit True on gtkagg for enhanced performance
span = SpanSelector(ax, onselect, 'horizontal', useblit=True,
rectprops=dict(alpha=0.5, facecolor='red'))
RadioButton选择变量y,SpannSelector缩放变量y。但是当y因点击而改变时,SpannSelector仍为默认值
答案 0 :(得分:0)
RadioButtons
窗口小部件的当前所选标签存储在RadioButtons.value_selected
中。因此,您可以随时访问它。
plotdict = {'TBF': TBF, 'TTR': TTR, 'MTBF': MTBF, 'MTTR': MTTR, 'Avail': Avail}
currentlabel = [None]
def funcplot(label):
l.set_ydata(plotdict[label])
currentlabel[0] = label
plt.draw()
radio.on_clicked(funcplot)
### later...
plt.plot(plotdict[currentlabel[0]])