Matplotlib 高级图表绘制与交互式可视化(ipywidgets)

发布于:2025-02-21 ⋅ 阅读:(21) ⋅ 点赞:(0)

目录:

ipywidgets 介绍

1. 什么是 ipywidgets

 直接开始:

动态调整正弦波频率

 随机散点图

启用交互式模式

使用滑块和下拉菜单调整图表样式

使用布局管理器创建复杂界面

使用动画创建动态图表

最后:

综合示例:动态仪表盘

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))