我正在尝试使用 Jupyter Notebook 中的 ipywidgets 库制作几个交互式绘图。但是我面临一个问题:当一个输入小部件(例如滑块)发生变化时,我尝试使多个绘图发生变化。
在添加的 MWE 中,这通过正弦和余弦函数进行了说明,它们都依赖于设置正弦和余弦函数幅度的单个输入小部件。因此,如果输入滑块的值设置为值 2,则正弦和余弦函数的幅度必须立即跟随。
如果您自己运行代码,您将看到两个滑块完美地一起移动。但是,并非两个图都相应地同时发生变化。
有人对此有解决方案吗?不一定用ipywidgets?
先感谢您,
瑞克
# FIRST JUPYTER NOTEBOOK CELL
import matplotlib.pyplot as plt
from ipywidgets import *
from math import *
import numpy as np
%matplotlib inline
default_value = 1 # Default value of amplutide
a = IntSlider(min = 1, max = 10, value = default_value, description = 'Amplitude of sine function')
b = IntSlider(min = 1, max = 10, value = default_value, description = 'Amplitude of sine function')
mylink = jslink((a, 'value'), (b, 'value'))
def widget_sine_function(amp_s = a):
x = np.linspace(0,20,100000) # Creat x-values for sine function
y = [amp_s*sin(i) for i in x] # Create y-values for sine function with amplitude according to value of widget a
plt.clf()
plt.figure(figsize=(15,5))
plt.subplot(1, 2, 1)
plt.plot(x,y)
interact(widget_sine_function)
# SECOND JUPYTER NOTEBOOK CELL
def widget_cosine_function(amp_c = b):
x = np.linspace(0,20,100000) # Creat x-values for cosine function
y = [amp_c*cos(i) for i in x] # Create y-values for cosine function with amplitude according to value of widget b
plt.clf()
plt.figure(figsize=(15,5))
plt.subplot(1, 2, 1)
plt.plot(x,y)
interact(widget_cosine_function)