我的kivy应用程序中有一个matplotlib图,我想用流数据每秒更新一次。到目前为止,我的行为有点奇怪。它确实更新,但只有当我调整窗口大小时
fig, ax = plt.subplots()
width = 0.65
ax.set_title('Scores by group and gender')
bar_canvas = fig.canvas
class Test(BoxLayout):
catA = NumericProperty(0)
catB = NumericProperty(0)
catC = NumericProperty(0)
#plot the bar graph
def plot(self, dt):
catA_rects = ax.bar(5, self.catA, width, color='g')
catB_rects = ax.bar(6, self.catB, width, color='#808080')
catC_rects = ax.bar(7, self.catC, width, color='r')
ax.legend((catA_rects[0], catB_rects[0], catC_rects[0]), ('Category A', 'Category B', 'Category C'))
#update the graph
def update(self):
Clock.schedule_interval(self.plot,1)
def classify_sample(self, test_sample):
result_prob = classifier.predict_proba(test_sample)[0]
result = classifier.predict(test_sample)[0]
if result_prob.max() > 0.55:
if result == 1:
self.catA += 1
else:
self.catC += 1
else:
self.catB += 1
class ClassificationApp(App):
def build(self):
res = Test()
res.bar_tab.add_widget(bar_canvas)
res.update()
return res
if __name__ == '__main__':
ClassificationApp().run()
在'kv'文件中,我调用classify_sample在RecycleView Viewclass中显示结果
Label:
text: app.root.classify_sample(data)
我正在使用plot
更新Clock.schedule_interval(self.plot,1)
函数,当我在屏幕上打印输出时,该函数正在工作,但当catA, catB or catC
的值时,图表没有更新变化
它仅在我稍微调整应用程序窗口大小时更新
还有另一种方法可以添加matplotlib以外的图形吗?当我为Android安装这个时,Matplotlib不会工作吗?
答案 0 :(得分:0)
我犯了一个相当愚蠢的错误。在plot
函数中更新图表后,我实际上并没有调用bar_canvas.draw()
方法