Я хотел бы создать объекты «рис», «топор» вне функции, а затем изменить топор из функции.Этот подход прекрасно работает, когда моя функция является типичной функцией python, но не работает, когда функция украшена @interact или обернута взаимодействием из ipywidgets.Мне любопытно, почему перенос с интерактивом влияет на способность пропускать топор.
from ipywidgets import interact
from matplotlib import pyplot as plt
import numpy as np
fig, ax = plt.subplots(1)
def mod_ax(n=10):
x,y = np.random.rand(n), np.random.rand(n)
ax.scatter(x,y)
return
# The interact wrapped function will not modify ax
interact(mod_ax, n=20)
# However, the below line works fine to modify ax;
# comment out the interact line and comment in below line to see modified plot
# mod_ax(n=50)
plt.show()
Когда вы используете функцию интерактивного переноса, он не модифицирует топор.Я пытался передать топор в качестве аргумента, но все равно не повезло.Это работает, если вы создаете fig, ax внутри обернутой функции или просто используете plt.plot вместо ax.plot , но я хочу иметь возможность создавать fig, axза пределами обернутой функции, а затем только изменяйте содержимое внутри, чтобы ускорить время рендеринга при изменении ползунка взаимодействия.Любой совет будет оценен.