我有一个简单的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
答案 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
进行绘图。