Я играю с динамическими обновлениями графиков matplotlib.
Я хотел бы иметь возможность динамически обновлять график, основываясь на некоторых данных, скажем, каждые 0,5 секунды. Однако вместо использования маркеров я хотел бы использовать изображение в формате jpg. т.е. построить несколько изображений и переместить их вдоль оси.
Вот фиктивный код, реализующий эту идею с помощью маркеров:
import matplotlib.pyplot as plt
import random
plt.ion()
class DynamicUpdate():
#Suppose we know the x range
min_x = 0
max_x = 10
def on_launch(self):
self.figure, self.ax = plt.subplots()
self.lines, = self.ax.plot([],[], 'o')
self.ax.set_xlim(self.min_x, self.max_x)
self.ax.set_ylim(0,500)
self.ax.grid()
def on_running(self, xdata, ydata):
self.lines.set_xdata(xdata)
self.lines.set_ydata(ydata)
self.figure.canvas.draw()
self.figure.canvas.flush_events()
#Example
def __call__(self):
import numpy as np
import time
self.on_launch()
xdata = np.arange(10)
ydata = np.zeros(10)
for it in range(100):
ydata=[y+random.randint(1,10) for y in ydata]
self.on_running(xdata, ydata)
time.sleep(0.5)
return xdata, ydata
d = DynamicUpdate()
d()
plt.show()
Я попытался использовать imshow()
для добавления изображений на ось, но они отказываются обновляться и перемещаться по мере изменения данных.
Если у кого-то есть блестящие идеи, буду признателен.