Обернуть данные графика в matplotlib - PullRequest
1 голос
/ 02 апреля 2020

Я разрабатываю инструмент визуализации для медицинского датчика давления, и мне нужно, чтобы моя ось x была зафиксирована в диапазоне от 0 до 20 сек c, а когда данные Y "переполняют" это значение, просто переопределяем последнее значение с новым, как диаграмма ЭКГ. В настоящее время я могу отобразить новые данные, но старые значения при переопределении остаются там. Это график первой итерации чтения данных: enter image description here

Как видите, когда я начинаю строить «новые» данные, старые значения остаются в способ создания этого эффекта: enter image description here

Мне нужно рисовать только обновленные данные, сохраняя при этом старые кривые, но переопределяя при поступлении новых данных, например: enter image description here

Так же, как это изображение, но без очистки кривых в зависимости от времени.

Это мой текущий код:

  import numpy as np
from matplotlib import pyplot as plt
from matplotlib.animation import FuncAnimation
import time
plt.style.use('ggplot')

lastmillis = int(round(time.time() * 1000))

fig = plt.figure()
ax = plt.axes(xlim=(0, 2), ylim=(-2, 2))

class Plot:
    def __init__(self):
        self.line, = ax.plot([], [], lw=1)
        self.line.set_data([], [])
        self.x = np.linspace(0, 2, 1000)
        self.y = np.empty(shape=(1000,))
        self.state = 0
        return
    def animate(self,i):
        if i >= self.x.size:
            i = i % self.x.size
            if self.state == 1:
                self.state = 0
            elif self.state == 0:
                self.state = 1

        print(i,",",self.x.size)
        if self.state == 0:
            self.y[i] = np.sin(2 * np.pi * (0.01 * i))
        else:
            self.y[i] = np.cos(2 * np.pi * (0.01 * i))

        self.line.set_data(self.x, self.y)
        return self.line,

plot = Plot()
anim = FuncAnimation(fig, plot.animate,
                                interval=20, blit=True)

plt.show()

Любая помощь или подсказка для делать это правильно? Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...