Python 更新matplotlib上的数据

Python 更新matplotlib上的数据,python,matplotlib,Python,Matplotlib,我想更新matplolib绘图上的数据,因此我从几个示例中修补了代码。为了便于说明,我有两个不同的矩阵数据,它们将交替地绘制在两个不同的子图中。代码如下: import numpy as np import matplotlib.pyplot as plt import time matrix1 = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]]) matrix2 = np.array([[2,3,4,5],[6,7,8,9],[10,11,12,13]

我想更新
matplolib
绘图上的数据,因此我从几个示例中修补了代码。为了便于说明,我有两个不同的矩阵数据,它们将交替地绘制在两个不同的子图中。代码如下:

import numpy as np
import matplotlib.pyplot as plt
import time

matrix1 = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
matrix2 = np.array([[2,3,4,5],[6,7,8,9],[10,11,12,13]])

plt.ion()

fig = plt.figure()
ax1 = fig.add_subplot(222)
ax2 = fig.add_subplot(221)

def update(mat1, mat2):

    ax1.plot(mat1.T, 'ro', color='red')
    ax2.plot(mat2.T, 'ro', color='blue')

    fig.canvas.draw()
    fig.canvas.flush_events()

    time.sleep(1)
    
    ax1.plot(mat2.T, 'ro', color='blue')
    ax2.plot(mat1.T, 'ro', color='red')

    fig.canvas.draw()
    fig.canvas.flush_events()

    time.sleep(1)

for i in range(10):
    update(matrix1, matrix2)
这显然不起作用。如下图所示,matrix1(红色)和matrix2(蓝色)的数据不应同时出现在每个子批次中,而应在每个子批次和每秒钟后的反向位置出现一个矩阵

如有任何建议,将不胜感激

p.S.我知道我曾试图咨询过一些类似的问题,但运气不佳。

试试这个

import numpy as np
import matplotlib.pyplot as plt
import time

from numpy.core.shape_base import block

matrix1 = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
matrix2 = np.array([[2,3,4,5],[6,7,8,9],[10,11,12,13]])

plt.ion()

fig = plt.figure()
ax1 = fig.add_subplot(222)
ax2 = fig.add_subplot(221)



def update(mat1, mat2):

    ax1.plot(mat1.T, 'ro', color='red')
    ax2.plot(mat2.T, 'ro', color='blue')
    plt.show()
    plt.pause(1)
    ax1.clear()
    ax2.clear()
    
    ax1.plot(mat2.T, 'ro', color='blue')
    ax2.plot(mat1.T, 'ro', color='red')
    plt.show()
    plt.pause(1)

    ax1.clear()
    ax2.clear()

for i in range(10):
    update(matrix1, matrix2)

matplotlib
提供了一个。最好使用它,因为动画事件循环具有更好的错误处理能力,例如从脚本运行时关闭绘图图形

将numpy导入为np
将matplotlib.pyplot作为plt导入
从matplotlib.animation导入FuncAnimation
矩阵1=np.数组([[1,2,3,4],[5,6,7,8],[9,10,11,12])
matrix2=np.数组([[2,3,4,5],[6,7,8,9],[10,11,12,13])
矩阵=[matrix1.T,matrix2.T]
图(ax1,ax2)=plt.子批次(1,2,sharex=True,sharey=True)
lines1=ax1.绘图(矩阵[0],'ro',颜色='red')
lines2=ax2.绘图(矩阵[1],'ro',颜色='blue')
def更新(帧):
矩阵。逆()
对于zip中的索引、l1、l2(范围(3)、行1、行2):
l1.设置_数据(范围(4),矩阵[0][:,索引])
l2.设置_数据(范围(4),矩阵[1][:,索引])
ani=动画(图,更新,帧=范围(10),间隔=1000)
plt.show()

为了使用
FuncAnimation()。然后在
update()
函数中,您可以
.set\u data()
或执行任何需要更改数据的操作。您可以使用
line.set_color()
等查看有关如何更改打印数据颜色的信息。

我复制了代码,但没有发生任何事情,也没有显示打印。我做错什么了吗?@user3060854我忘了
plt.show()
应该可以用它:)