matplotlib 实现动态折线图
时间: 2023-07-12 18:11:07 浏览: 41
使用 Matplotlib 实现动态折线图可以通过以下步骤实现:
1. 导入必要的库,如 Matplotlib 和 NumPy。
```python
import matplotlib.pyplot as plt
import numpy as np
```
2. 创建一个 Figure 对象和一个 Axes 对象,并设置一些基本参数。
```python
fig, ax = plt.subplots()
ax.set_xlim(0, 10)
ax.set_ylim(0, 10)
line, = ax.plot([], [])
```
3. 定义一个函数,用于更新数据和折线图。该函数接受一个参数表示当前时间,根据时间生成一些随机数据,并更新折线图。
```python
def update(t):
x = np.linspace(0, 10, 100)
y = np.sin(x - t) + np.random.normal(0, 0.1, size=(100,))
line.set_data(x, y)
```
4. 使用 FuncAnimation 函数创建一个动画对象,并指定更新函数和帧数。
```python
from matplotlib.animation import FuncAnimation
ani = FuncAnimation(fig, update, frames=np.linspace(0, 10, 100), interval=50)
```
5. 调用 plt.show() 函数显示动态折线图。
```python
plt.show()
```
完整的代码如下所示:
```python
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.animation import FuncAnimation
fig, ax = plt.subplots()
ax.set_xlim(0, 10)
ax.set_ylim(-2, 2)
line, = ax.plot([], [])
def update(t):
x = np.linspace(0, 10, 100)
y = np.sin(x - t) + np.random.normal(0, 0.1, size=(100,))
line.set_data(x, y)
ani = FuncAnimation(fig, update, frames=np.linspace(0, 10, 100), interval=50)
plt.show()
```
该代码会生成一个动态折线图,每隔 50 毫秒更新一次,总共更新 100 帧,折线的形状会随着时间变化而变化。
阅读全文