Я разрабатываю инструмент визуализации для медицинского датчика давления, и мне нужно, чтобы моя ось x была зафиксирована в диапазоне от 0 до 20 сек c, а когда данные Y "переполняют" это значение, просто переопределяем последнее значение с новым, как диаграмма ЭКГ. В настоящее время я могу отобразить новые данные, но старые значения при переопределении остаются там. Это график первой итерации чтения данных:
Как видите, когда я начинаю строить «новые» данные, старые значения остаются в способ создания этого эффекта:
Мне нужно рисовать только обновленные данные, сохраняя при этом старые кривые, но переопределяя при поступлении новых данных, например:
Так же, как это изображение, но без очистки кривых в зависимости от времени.
Это мой текущий код:
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()
Любая помощь или подсказка для делать это правильно? Заранее спасибо