目录:
ipywidgets 介绍
1. 什么是 ipywidgets
ipywidgets 是一个用于 Jupyter Notebook 和 JupyterLab 的交互式 HTML 小部件库,允许用户在 Jupyter Notebook 中创建交互式用户界面。这些小部件可以与 Python 代码无缝集成,使用户能够与数据进行互动,为学习、研究和开发提供沉浸式体验。
安装:
pip install ipywidgets
或者conda:
conda install -c conda-forge ipywidgets
2. 主要功能
丰富的交互控件:提供滑块、文本框、按钮、下拉菜单、复选框等多种控件。
事件处理:每个控件都可以响应事件,并调用指定的事件处理函数。
布局管理:支持灵活的布局管理,包括水平布局(HBox)、垂直布局(VBox)等。
富媒体内容展示:支持文本、图像、视频、音频等富媒体内容的展示。
与 Matplotlib 集成:可以与 Matplotlib 结合,创建交互式图表。
3. 应用场景
数据可视化:通过交互式控件调整参数,实时更新可视化结果。
教学与演示:利用滑动条和图表结合,让学生直观理解数学函数的变化。
科学模型探索:在模型参数上应用滑块,观察不同参数对模型预测的影响。
应用原型开发:快速构建交互式应用原型,用于数据探索和分析。
直接开始:
动态调整正弦波频率
import numpy as np
import matplotlib.pyplot as plt
from ipywidgets import interact
# 定义绘图函数
def plot_sine_wave(frequency=1):
plt.clf() # 清除当前图形
x = np.linspace(0, 10, 100)
y = np.sin(frequency * x)
plt.plot(x, y)
plt.title(f'Sine Wave: Frequency = {frequency}')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.grid()
plt.show()
# 创建滑块
interact(plot_sine_wave, frequency=(1, 10, 0.1))
``` [^13^]
#### **1.2 动态调整正弦波振幅**
```python
def plot_sine_wave(amplitude=1):
plt.clf()
x = np.linspace(0, 10, 100)
y = amplitude * np.sin(x)
plt.plot(x, y)
plt.title(f'Sine Wave: Amplitude = {amplitude}')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.grid()
plt.show()
interact(plot_sine_wave, amplitude=(0.1, 5, 0.1))