автономные интерактивные фигуры с "виджетом matplotlib" и @interact - PullRequest
0 голосов
/ 07 февраля 2020

В записной книжке у меня есть три ячейки:

%matplotlib widget
import matplotlib.pyplot as plt
from ipywidgets import interact
import numpy as np
x = np.linspace(0, 6.28, 100)
fig, ax = plt.subplots()
@interact(alpha=(0., 10.))
def someplot(alpha=1.):
    ax.clear()
    ax.plot(x, np.sin(alpha * x))
fig, ax = plt.subplots()
@interact(alpha=(0., 10.))
def someplot(alpha=1.):
    ax.clear()
    ax.plot(x, np.cos(alpha * x))

После того, как я последовательно выполню все три ячейки, оба ползунка для первой цифры и ползунок для второго рисунка меняет то, что показано на втором рисунке.

Это очевидно, потому что функция, связанная с первым ползунком, ссылается на глобальную переменную ax, которая теперь принадлежит второй фигуре. Поэтому я могу избежать такого поведения, используя разные имена, например ax1, ax2.

Проблема в том, что в этой записной книжке у меня будет очень много интерактивных графиков, назначение им различных имен будет утомительно, я запутаюсь, я буду двигать клетки вверх и вниз, это будет хаос.

Есть ли другой, более элегантный / автоматизированный способ 1019 *? Например, могу ли я как-то сохранить ссылку на объект с именем ax в соответствующей функции при создании, например замыкание?

...