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

时间:2017-12-18 16:32:48

标签: python python-2.7 numpy matplotlib

我有一个简单的def update(self): for touch in self.overlapping_sprites: if type(touch) is wall: print("Hit a wall") self.horizontal_bounce() elif type(touch) is roof: print("you hit the roof") self.vertical_bounce() elif type(touch) is block: self.vertical_bounce() self.score.increase_score(10) if self.bottom>games.screen.height: self.block.end_game() 图表,我想通过函数添加点数。似乎当我扩展数组存储x和y值时,我得到错误matplotlib,尽管两个数组都是6个值。

RuntimeError: xdata and ydata must be the same length

2 个答案:

答案 0 :(得分:3)

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

所以这是错误的

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

将其更改为

line1.set_data(x,y)

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

答案 1 :(得分:1)

我知道这是一篇过时的文章,但是对于仍在着手解决此问题的任何人,有两种解决方案。

第一个解决方案是Aakash Verma写的in their solution,它是用简单的.代替line1.set_xdata(x)line1.set_xdata(y),这将保留{{1 }}和line1.set_data(x,y)的长度相同,假设输入x和y的长度相同。

第二种解决方法是注意到user2242044只是打错了字,第二次应该是xdata时两次写了ydata。这就是导致set_xdata(或者,对于我来说,对于Python 3,set_ydata)的原因,因为两次程序都将RuntimeError: xdata and ydata must be the same length添加到ValueError: shape mismatch: objects cannot be broadcast to a single shape而没有匹配的xdata进行绘图。