如何在 Matplotlib 中更新绘图?
在本文中,让我们讨论如何在 Matplotlib 中更新绘图。更新绘图只是意味着绘制数据,然后清除现有绘图,然后再次绘制更新的数据,所有这些步骤都在循环中执行。
使用的功能:
- canvas.draw():用于更新已更改的图形。它将重绘当前图形。
- canvas.flush_events():它保存 GUI 事件,直到处理完 UI 事件。这将一直运行到循环结束并且值将不断更新。
下面是实现。
- 使用以下方法创建要绘制的数据:
Python3
x = np.linspace(0, 10*np.pi, 100)
y = np.sin(x)
Python3
plt.ion()
Python3
fig = plt.figure()
ax = fig.add_subplot(111)
line1, = ax.plot(x, y, 'b-')
Python3
for phase in np.linspace(0, 10*np.pi, 100):
line1.set_ydata(np.sin(0.5 * x + phase))
fig.canvas.draw()
fig.canvas.flush_events()
Python3
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10*np.pi, 100)
y = np.sin(x)
plt.ion()
fig = plt.figure()
ax = fig.add_subplot(111)
line1, = ax.plot(x, y, 'b-')
for phase in np.linspace(0, 10*np.pi, 100):
line1.set_ydata(np.sin(0.5 * x + phase))
fig.canvas.draw()
fig.canvas.flush_events()
- 使用以下方法打开交互模式:
蟒蛇3
plt.ion()
- 现在我们将配置绘图('b-' 表示蓝线):
蟒蛇3
fig = plt.figure()
ax = fig.add_subplot(111)
line1, = ax.plot(x, y, 'b-')
- 最后,循环更新:
蟒蛇3
for phase in np.linspace(0, 10*np.pi, 100):
line1.set_ydata(np.sin(0.5 * x + phase))
fig.canvas.draw()
fig.canvas.flush_events()
完整的代码。
蟒蛇3
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10*np.pi, 100)
y = np.sin(x)
plt.ion()
fig = plt.figure()
ax = fig.add_subplot(111)
line1, = ax.plot(x, y, 'b-')
for phase in np.linspace(0, 10*np.pi, 100):
line1.set_ydata(np.sin(0.5 * x + phase))
fig.canvas.draw()
fig.canvas.flush_events()
输出: