Так что я использую FuncAnimation из matplotlib, чтобы динамически отображать некоторые данные, когда они поступают из последовательного порта (в моем проекте это класс транспортных средств от dronekit, который отображается с зеленой точкой), то, что я имею в основном, это анимация называется, что каждый l oop получает новый класс транспортных средств с измененными данными, чтобы их можно было построить, но по какой-то причине он строит графики, но спустя пару секунд после потока миссии (что позволяет «refre sh» "данных об автомобиле, которые он выскакивает и убивает python (Колесо смерти), вот что я получаю:
Я положил некоторые отслеживание отпечатков внутри функции, которая вызывается при запуске FuncAnimation, выглядит следующим образом:
def droneAnimation(i, vehicle, droneScatter):
time.sleep(1)
lat = [vehicle.location.global_relative_frame.lat]
lon = [vehicle.location.global_relative_frame.lon]
alt = [vehicle.location.global_relative_frame.alt]
print("Alt received: " + str(alt))
droneScatter._offsets3d = (lat,lon,alt)
print("Changed pos")
Как вы можете видеть, эти отпечатки срабатывают в первые несколько секунд, но все же вылетает после нескольких итераций. называется так:
fig,droneScatter = plotLiveSimpleFacade(vehicle,w,2)
ani = FuncAnimation(fig,droneAnimation, fargs = (vehicle,droneScatter))
plt.draw()
plt.pause(0.1)
m = threading.Thread(target=MissionStart(vehicle,hmax) , name = "MISSION")
m.start()
Для справки: fig - это plt.figure (), droneScatter - просто точка разброса, транспортное средство - это транспортное средство класс, содержащий данные, которые динамически обновляются, и поток MissionStart - это всего лишь поток, который заставляет класс транспортного средства меняться со временем.
Я также хотел бы отметить, что фиг находится в интерактивном режиме, а пределы осей установить хорошо (я видел, что когда вы динамически изменяете данные, но не масштабируете оси, могут возникнуть проблемы) также, пробуя различные комбинации plt.draw () и plt.plot (block = False), я не строю графики вообще или просто пустой сюжет.
Поскольку я понятия не имею, что является причиной этого, я добавлю тег dronekit и поток, чтобы узнать, есть ли у кого-нибудь идея!