从mattalotlib小部件

时间:2018-02-16 00:20:16

标签: python matplotlib widget

您好我在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仍为默认值

1 个答案:

答案 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]])