Ускорение интерактивного сюжета matplotlib - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть данные в списке 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.Может кто-нибудь объяснить мне, как изменить код выше, чтобы увеличить частоту обновления?Спасибо

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