📜  如何在 Matplotlib 中更新绘图?

📅  最后修改于: 2022-05-13 01:55:28.736000             🧑  作者: Mango

如何在 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()

输出:

更新绘图 matplotlib