我有一个简单的matplotlib
chart,我想通过一个函数添加点。似乎当我扩展数组存储x和y值时,我得到错误RuntimeError: xdata and ydata must be the same length
尽管两个数组都是6个值。
import matplotlib.pyplot as plt
import numpy as np
import time
x = np.array([1, 2, 3])
y = np.array([1, 7, 5])
plt.ion()
fig = plt.figure()
ax = fig.add_subplot(111)
line1, = ax.plot(x, y, 'r-')
plt.show()
def update_points(new_x, new_y):
global x, y, fig, line1, ax
time.sleep(2)
x = np.append(x, new_x)
y = np.append(y, new_y)
line1.set_xdata(x)
line1.set_xdata(y)
ax.relim()
ax.autoscale_view()
fig.canvas.draw()
update_points(np.array([4, 5, 6]), np.array([4, 5, 3]))
这是因为您最初已经使用引用变量line1
创建了一个图形。因此,当您执行您创建的函数时,第一次说,您已经有了一个图,因此一次更改一个轴就变得错误了
所以这是错的
line1.set_xdata(x)
line1.set_xdata(y)
将其更改为
line1.set_data(x,y)
如果您已经绘制了绘图,请使用plt.draw()
重绘以查看更改。