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

问题描述 投票:2回答:1

我有一个简单的matplotlibchart,我想通过一个函数添加点。似乎当我扩展数组存储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]))
python python-2.7 numpy matplotlib
1个回答
3
投票

这是因为您最初已经使用引用变量line1创建了一个图形。因此,当您执行您创建的函数时,第一次说,您已经有了一个图,因此一次更改一个轴就变得错误了

所以这是错的

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

将其更改为

line1.set_data(x,y)

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

© www.soinside.com 2019 - 2024. All rights reserved.