У меня проблема с функцией анимации в пакете matplotlib для python. функция, которую я передаю в анимацию, предполагает отображение нескольких графиков на одной фигуре, и после интервала времени каждый график получит N значений для осей X и Y, а затем отобразит график. но через случайное время я получаю эту ошибку:
> Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\Lenovo\AppData\Local\Programs\Python\Python38-32\lib\tkinter
return self.func(*args)
File "C:\Users\Lenovo\AppData\Local\Programs\Python\Python38-32\lib\tkinter
func(*args)
File "C:\Users\Lenovo\AppData\Local\Programs\Python\Python38-32\lib\site-pa
TimerBase._on_timer(self)
File "C:\Users\Lenovo\AppData\Local\Programs\Python\Python38-32\lib\site-pa
ret = func(*args, **kwargs)
File "C:\Users\Lenovo\AppData\Local\Programs\Python\Python38-32\lib\site-pa
still_going = Animation._step(self, *args)
File "C:\Users\Lenovo\AppData\Local\Programs\Python\Python38-32\lib\site-pa
self._draw_next_frame(framedata, self._blit)
File "C:\Users\Lenovo\AppData\Local\Programs\Python\Python38-32\lib\site-pa
self._draw_frame(framedata)
File "C:\Users\Lenovo\AppData\Local\Programs\Python\Python38-32\lib\site-pa
self._drawn_artists = self._func(framedata, *self._args)
File "c:/Users/Lenovo/Desktop/Coding/python/mycode_
axs[index].plot(oldTimeArray[index], oldDataArray[index])
File "<__array_function__ internals>", line 5, in atleast_1d
File "C:\Users\Lenovo\AppData\Local\Programs\Python\Python38-32\lib\site-packages\numpy\core\shape_base.py", line 67, in atleast_1d
ary = asanyarray(ary)
File "C:\Users\Lenovo\AppData\Local\Programs\Python\Python38-32\lib\site-packages\numpy\core\_asarray.py", line 138, in asanyarray
return array(a, dtype, copy=False, order=order, subok=True)
ValueError: cannot copy sequence with size 2066 to array axis with dimension 2000
Я не могу показать вам весь исходный код, но это функция, которую я передаю функции анимации (большая часть):
def animate(frameIndex, Xdata, Ydata):
if(Xdata != []):
axs = [0 for x in range(5)]
fig.clf()
fig.clear()
for index in range(5):
axs[index] = fig.add_subplot(5, 1, index+1)
Xdata[index] = Xdata[index][-100:]
Ydata[index] = Ydata[index][-100:]
axs[index].plot(Xdata[index], Ydata[index])
for index in range(5):
if(index < 4):
axs[index].get_shared_x_axes().join(axs[index+1], axs[index])
axs[index].set_xticks([], )
axs[index].title.set_text("title")
plt.xticks(rotation=45, ha='right')
plt.subplots_adjust(bottom=0.30)
fig.suptitle("graph")
fig.tight_layout(rect=[0, 0.03, 1, 0.95])
Я не уверен, поможет ли эта информация или нет, но я использую ее для проекта MQTT, использую библиотеку paho, а Xdata и Ydata поступают из функции обратного вызова после получения данных.