2016-01-10 2 views
0

Я хочу показать живую диаграмму данных датчика ускорения. Kivy - это каркас, и matplotlib следует использовать для сюжета. Я могу легко интегрировать статический график в экранах моих приложений, однако мне не удалось использовать метод анимации matplotlib. Как я могу это сделать? Основываясь на примере, который я нашел (не сделан для kivy), до сих пор остается мой код.Как использовать анимацию matplotlib в kivy

class FigGraphLive(BoxLayout): 

def __init__(self, **kwargs): 
    super(FigResultPropGraphLive, self).__init__(**kwargs) 

    fig = Figure(figsize=(3, 1), facecolor='none', dpi=90) 
    ax = fig.add_subplot(111) 
    ax.set_axis_bgcolor('none') 
    ax.spines['bottom'].set_color('white') 
    ax.spines['top'].set_color('white') 
    ax.spines['left'].set_color('white') 
    ax.spines['right'].set_color('white') 
    xa = ax.xaxis     
    ya = ax.yaxis 
    xa.set_tick_params(labelcolor='white') 
    xa.set_tick_params(color='white') 
    ya.set_tick_params(labelcolor='white') 
    ya.set_tick_params(color='white') 

    self.valx = np.zeros(0) 
    self.valy = np.zeros(0) 
    self.valz = np.zeros(0) 
    self.time = np.zeros(0) 
    plxax = ax.plot(self.time, self.valx, color='blue', label='X-Axis') 
    plyax = ax.plot(self.time, self.valy, color='red', label='Y-Axis') 
    plzax = ax.plot(self.time, self.valz, color='green', label='Z-Axis') 

    leg = ax.legend() 
    leg.get_frame().set_alpha(0.4) 

    self.plxmin = 0.0 
    self.plxmax = 10.0 
    self.plx = 0.0 

    simulation = mplanimation.FuncAnimation(fig, self.updateGraph, blit=False, frames=200, interval=50, repeat=False) 

    figcanvas = FigureCanvas(fig) 
    figcanvas.draw() 

    self.create_plot(figcanvas) 

def updateGraph(self): 
    self.valx = np.append(self.valx, np.random.rand() * 4) 
    self.valy = np.append(self.valx, np.random.rand() * 4) 
    self.valz = np.append(self.valx, np.random.rand() * 0.5) 

    self.plx += 0.05 

    if self.plx >= self.plxmax - 1.00: 
     plxax.axes.set_xlim(self.plx - self.plxmax + 1.0, x + 1.0) 
     plyax.axes.set_xlim(self.plx - self.plxmax + 1.0, x + 1.0) 
     plzax.axes.set_xlim(self.plx - self.plxmax + 1.0, x + 1.0) 

    return plxax, plyax, plzax 

def create_plot(self, figcanvas): 
    self.add_widget(figcanvas) 

ответ

0

Вы можете использовать Matplotlib пример интеграции с kivy сада: https://github.com/kivy-garden/garden.matplotlib


Другим вариантом является https://github.com/kivy-garden/garden.graph, с анимированной презентацией внедренной в init.py файл.

+0

Возможно, я просто не понимаю, но приведенные здесь примеры не включают способ использования анимации matplotlib, как я ее вижу. У меня нет проблем, включая сам график, но анимируя его :-) – Jonnnny

+0

@Jonnnny Возможно, это было бы лучше: https://github.com/kivy-garden/garden.graph, просто запустите _init_.py, есть анимированный синус в презентации. – jligeza

Смежные вопросы