如何通过变量动态定义ipywidgets交互式绘图的用户输入参数数量
动态可变参数的ipywidgets交互式绘图实现方案
实现思路是通过动态生成对应数量的滑块控件,再通过包装函数将分散的滑块取值汇总为w、h列表传入目标绘图函数,不需要手动逐个定义参数。
完整可运行代码
import matplotlib.pyplot as plt from ipywidgets import interactive, IntSlider # 自定义柱体数量,修改该值即可自动调整生成的控件数量 n_bars = 3 # 你期望的简化版绘图函数 def p_(w, h): plt.bar(w, h) plt.show() # 动态生成所有滑块控件 widget_params = {} for idx in range(n_bars): widget_params[f'w{idx+1}'] = IntSlider(min=0, max=10, step=1, value=1, description=f'柱{idx+1}宽度') widget_params[f'h{idx+1}'] = IntSlider(min=0, max=10, step=1, value=1, description=f'柱{idx+1}高度') # 中间包装函数:汇总所有滑块值为w、h列表 def wrapper(**kwargs): w_list = [kwargs[f'w{i+1}'] for i in range(n_bars)] h_list = [kwargs[f'h{i+1}'] for i in range(n_bars)] p_(w_list, h_list) # 生成交互式对象 interactive_plot = interactive(wrapper, **widget_params) interactive_plot
说明
- 仅需修改
n_bars的取值,即可对应生成N个柱体的调节控件,适配可变参数的需求 - 滑块的取值范围、步长、默认值都可以根据实际需求调整
IntSlider的参数修改
内容的提问来源于stack exchange,提问作者Hampus Alfredsson
相关产品推荐
相关产品推荐

