Tutaj jest biblioteką, która zajmuje się w czasie rzeczywistym kreślenia/dane logowania (joystick), chociaż Nie jestem pewien, czy działa z jowerem. Możesz zainstalować go przy użyciu zwykłego pip install joystick
.
Trudne do stworzenia działającego rozwiązania bez dodatkowych szczegółów na temat danych. Oto opcja:
import joystick as jk
import numpy as np
class test(jk.Joystick):
# initialize the infinite loop decorator
_infinite_loop = jk.deco_infinite_loop()
def _init(self, *args, **kwargs):
"""
Function called at initialization, see the docs
"""
# INIT DATA HERE
self.shape = (10, 4) # M, N
self.data = np.random.random(self.shape)
self.xaxis = range(self.shape[1])
############
# create a graph frame
self.mygraph = self.add_frame(
jk.Graph(name="TheName", size=(500, 500), pos=(50, 50),
fmt="go-", xnpts=self.shape[1], freq_up=5, bgcol="w",
xylim=(0, self.shape[1]-1, None, None)))
@_infinite_loop(wait_time=0.5)
def _generate_fake_data(self): # function looped every 0.5 second
"""
Loop starting with the simulation start, getting data and
pushing it to the graph every 0.5 seconds
"""
# NEW (RANDOM) DATA
new_data = np.random.random(self.shape[1])
# concatenate data
self.data = np.vstack((self.data, new_data))
# push new data to the graph
self.mygraph.set_xydata(self.xaxis, self.data[-1])
t = test()
t.start()
t.stop()
t.exit()
Kod ten będzie utworzyć wykres, który jest automatyczne aktualizowanie 5 razy na sekundę (freq_up = 5), podczas gdy nowe dane (losowo) generowany co 0,5 sekundy (WAIT_TIME = 0,5) i wciśnięty do wykresu w celu wyświetlenia.
Jeśli nie chcesz, aby oś Y obracała się, wpisz t.mygraph.xylim = (0, t.shape[1]-1, 0, 1)
.
Byłoby lepiej wydobyć interesujące informacje z tego notatnika w tej odpowiedzi. – Raito