Виджеты кнопок Python Matplotlib и события SpanSelector - PullRequest
0 голосов
/ 07 ноября 2018

Я пытаюсь написать программу, которая переключается между сигналами нажатием кнопки «предыдущая» и «следующая», и в то же время дает возможность выбрать и сохранить часть графика. Вот что я получил до сих пор:

%matplotlib tk

itera = list(range(1, 100))      

fig, ax = plt.subplots()
plt.grid()
plt.subplots_adjust(bottom=0.2)

t = time_axis
s = signal[0]        # first signal in the plot

l, = plt.plot(time, s, lw=2)           # first plot
plt.xlabel('Time (s)')
plt.ylabel('Acceleration')
plt.title('Plot batches')

############### Buttons widget  ####################

class Index(object):
    ind = 0

    def next(self, event):
        self.ind += 1
        i = self.ind % len(itera)
        ydata = signal[i]     
        l.set_ydata(ydata)
        plt.draw()

    def prev(self, event):
        self.ind -= 1
        i = self.ind % len(itera)
        ydata = signal[i] 
        l.set_ydata(ydata)
        plt.draw()

callback = Index()

axprev = plt.axes([0.7, 0.05, 0.1, 0.075])
axnext = plt.axes([0.81, 0.05, 0.1, 0.075])
bnext = Button(axnext, 'Next')
bnext.on_clicked(callback.next)

bprev = Button(axprev, 'Previous')
bprev.on_clicked(callback.prev)


###############  Select part of the port  ####################

def onselect(xmin, xmax):
    x = time_axis
    y = signal[callback.ind % len(itera)]
    indmin, indmax = np.searchsorted(x, (xmin, xmax))
    indmax = min(len(x) - 1, indmax)

    thisx = x[indmin:indmax]
    thisy = y[indmin:indmax]

    # save
    np.savetxt("text", np.c_[thisx, thisy])


def fun_with_spanselector_inside():
    span = SpanSelector(ax, onselect, 'horizontal', useblit=True,
                        rectprops=dict(alpha=0.5, facecolor='red') )
    return span

span = fun_with_spanselector_inside()

plt.show()

В настоящее время я не знаю, как обновить сигнал y в функции onselect в соответствии с нажатой кнопкой.

Есть предложения?

Спасибо

UPDATE:

Я обновил свой код и подошел к вопросу выше. Теперь я не знаю, как выбрать несколько частей одного графика и сохранить их в разных файлах. В настоящий момент файл «текст» обновляется каждый раз, и я теряю данные каждый раз, когда выбираю новую область графика.

Может кто-нибудь помочь мне с этим?

Я новичок в python и особенно с matplotlib, так что извините, я прошу что-то простое.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...