Matplotlib set_data xdata 和 ydata 必须是相同的长度错误

use*_*044 3 python numpy matplotlib python-2.7

我有一个简单的matplotlib图表,我想通过函数向其中添加点。似乎当我扩展数组存储 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]))
Run Code Online (Sandbox Code Playgroud)

Aak*_*rma 7

之所以如此,是因为您最初已经创建了一个带有参考变量的图形line1。因此,当你执行你创建的函数时,第一次说,你已经有了一个情节,因此一次只改变一个轴是错误的

所以这是错误的

line1.set_xdata(x) line1.set_xdata(y)

将其更改为

line1.set_data(x,y)

如果您已经绘制了绘图,请使用重新绘制plt.draw()以查看更改。