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()
应该可以用它:)