Возможно изображать графически в реальном времени в python?

Я старался получать график в реальном времени с matplotlib, но он был сделан мне почти невозможным: существует какой-то способ мочь реализовывать это?

Вопрос состоит в том, что я получаю данные посредством порта usb и храню их в списке, который каждый раз больше, так как есть новые данные. То, что я хочу, состоит в том, чтобы по мере того, как была получена новая информация (что очень очень быстрый) он появился в графике в реальном времени.

Я пробовал так, но оно не функционировало:

import matplotlib.pyplot as plt
import analog

b = analog('COM3')
g = []

while (True):
    val = b.analogRead(pin)
    res = int((int(val) * 250000) / 1023)
    g.append(res)
    print("%s ............... %s" % (res, t))
    plt.figure(1)
    plt.plot(g)
    plt.show(block = False)

plt.close('all')
3
задан 23.04.2016, 18:22
2 ответа

Следующее было бы должно функционировать, хотя у него нет porqué иметь большой результат. Если ты сделаешь график каждая секунда, он стоит тебе, если ты нуждаешься в чем-то, что рисовало бы больше графиков из-за секунды, возможно смотреть оптимизирования этого кода (но он станет немного более сложным) или возможно использовать PyQwt. Простой код в matplotlib был бы:

import numpy as np
import matplotlib.pyplot as plt

plt.ion() # decimos de forma explícita que sea interactivo

y = [] # los datos que vamos a dibujar y a actualizar

# el bucle infinito que irá dibujando
while True:
    y.append(np.random.randn(1)) # añadimos un valor aleatorio a la lista 'y'

    # Estas condiciones las he incluido solo para dibujar los últimos 
    # 10 datos de la lista 'y' ya que quiero que en el gráfico se 
    # vea la evolución de los últimos datos
    if len(y) <= 10:
        plt.plot(y)
    else:
        plt.plot(y[-10:])

    plt.pause(0.05) # esto pausará el gráfico
    plt.cla() # esto limpia la información del axis (el área blanca donde
              # se pintan las cosas.
4
ответ дан 24.11.2019, 14:32

Другой интересный выбор - PyQtGraph, который написан в Пайтоне и использует PyQt4/PySide для графической части и NumPy для вычисления.

Немного, что застал меня, состоит в том, что ты можешь работать с графиком в реальном времени с мышью (даже с графиками в 3D).

-1
ответ дан 24.11.2019, 14:32