У меня есть данные в списке python, состоящем из массивов numpy.Моя идея состоит в том, чтобы просмотреть эти данные с помощью интерактивного графика, где ползунок обращается к элементам списка.Используя ipywidgets и matplotlib, это работает, как показано ниже.Недостатком является скорость обновления графиков.Поскольку matplotlib рисует всю фигуру после смены ползунка, она действительно медленная.
import matplotlib.pyplot as plt
from ipywidgets import interactive
def f(data_nr, layer_nr):
xmin = 0
xmax = 3
fig, axs = plt.subplots(2, 2,figsize=(10,10))
axs[0,0].minorticks_on()
axs[0,0].plot(data[data_nr][layer_nr])
axs[0,0].set_xlim(xmin, xmax)
axs[0,0].set_ylim(-10, 0)
axs[0,0].set_xlabel('x unit')
axs[0,0].set_ylabel('Quantity_1')
axs[0,0].grid(True)
axs[0,1].minorticks_on()
axs[0,1].plot(data[data_nr][layer_nr*3+1])
axs[0,1].set_xlim(xmin, xmax)
axs[0,1].set_ylim(-10, 0)
axs[0,1].set_xlabel('x unit')
axs[0,1].set_ylabel('Quantity_2')
axs[0,1].grid(True)
axs[1,0].minorticks_on()
axs[1,0].plot(data[data_nr][layer_nr*3+2])
axs[1,0].set_xlim(xmin, xmax)
axs[1,0].set_ylim(-10, 0)
axs[1,0].set_xlabel('x unit')
axs[1,0].set_ylabel('Quantity_3')
axs[1,0].grid(True)
axs[1,1].minorticks_on()
axs[1,1].plot(data[data_nr][layer_nr*3+3])
axs[1,1].set_xlim(xmin, xmax)
axs[1,1].set_ylim(-10, 0)
axs[1,1].set_xlabel('x unit')
axs[1,1].set_ylabel('Quantity_4')
axs[1,1].grid(True)
fig.tight_layout()
plt.show()
interactive_plot = interactive(f, data_nr=(0, 10,1), layer_nr=(1, 10, 1))
output = interactive_plot.children[-1]
interactive_plot
Теперь я прочитал, что скорость рисования можно увеличить, перерисовав только данные, используя draw_artist или blit но, если честно, я не понимаю, как я могу применить оба в примере выше.Стоит отметить, что я использую ноутбук Jupyter.Может кто-нибудь объяснить мне, как изменить код выше, чтобы увеличить частоту обновления?Спасибо