Matplotlib Animation, нанесение данных за некоторое время True: - PullRequest
0 голосов
/ 12 января 2020

Я запускаю скрипт на Raspberry Pi, где я беру некоторые данные с акселерометра и хочу постоянно обновлять график. Я прочитал и посмотрел несколько видео на YouTube, и я решил использовать анимацию Matplotlib.

Теперь все вроде работает, но сюжет не прорисовывается до того, как я KeyboardInterrupt скрипта. И я понимаю почему, потому что функция plot находится внутри l oop. Я пытался вытащить его из l oop, но тогда он вообще не работает.

       import matplotlib.pyplot as plt
       import matplotlib.animation as animation
       from matplotlib import style
       style.use("fivethirtyeight")

       import time
       import board
       import busio
       import adafruit_tca9548a
       import adafruit_adxl34x

       i2c = busio.I2C(board.SCL, board.SDA)


       tca = adafruit_tca9548a.TCA9548A(i2c)


       ad1 = adafruit_adxl34x.ADXL345(tca[0])
       ad2 = adafruit_adxl34x.ADXL345(tca[2])


       fig = plt.figure()
       ax1 = fig.add_subplot(1,1,1)


       def animate(i):
           G = []
           while True:

              x,y,z = ad2.acceleration


              acc = [x,y,z]
              acc_abs = [abs(a) for a in acc]
              i = acc_abs.index(max(acc_abs))
              stor = acc[i]

              if stor>0:
                  stor = stor-10.52
              elif stor<0:
                  stor =  stor+10.52

              time.sleep(1)

              G.append(stor)
              ax1.clear()
              ax1.plot(G)

      ani = animation.FuncAnimation(fig,animate,interval =1000)
      plt.show()
...