Python Kivy 实时图表

Posted

技术标签:

【中文标题】Python Kivy 实时图表【英文标题】:Python Kivy real time chart 【发布时间】:2019-07-22 09:34:34 【问题描述】:

我正在学习使用 Kivy。我的目标是创建一个应用程序来显示运行声音的声波图。

很遗憾,我无法让图表实时更新。我得到“NameError: name 'graph' is not defined”,我真的不知道如何解决它。

代码如下:

from math import sin
from kivy.garden.graph import Graph, MeshLinePlot
from kivy.garden.matplotlib.backend_kivyagg import FigureCanvasKivyAgg
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.clock import Clock


class MyApp(App):
    plot = MeshLinePlot(color=[1, 0, 0, 1])

    graph = Graph(xlabel='X', ylabel='Y', x_ticks_minor=5,
        x_ticks_major=25, y_ticks_major=1,
        y_grid_label=False, x_grid_label=False, padding=5,
        x_grid=False, y_grid=False, xmin=-0, xmax=100, ymin=-1, ymax=1,)

    def build(self):

        box = BoxLayout()
        Clock.schedule_interval(self.update_points, 1/60.)
        Clock.schedule_interval(self.update_xaxis, 1/60.)
        box.add_widget(graph)
        return box

    def update_xaxis(self,*args):
        global graph
        graph.xmin = 0
        graph.xmax = 100

    def update_points(self, *args):
        #self.plot.points = [(i,i)]

        self.plot.points = [(x, sin(x / 10.)) for x in range(0, 101)]





MyApp().run()

【问题讨论】:

【参考方案1】:

您对plotgraph 的引用(创建它们的地方除外)都应该是self.plotself.graph。此外,您不希望在 update_xaxis() 方法中使用 global graph 行。在你做出更正之后,你的下一个问题应该是一个单独的帖子。

【讨论】:

以上是关于Python Kivy 实时图表的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式(Python)抓取流式实时股票图表代码数据及其指标

性能测试 基于Python结合InfluxDB及Grafana图表实时采集Linux多主机性能数据

性能测试 基于Python结合InfluxDB及Grafana图表实时监控Android系统和应用进程

python绘制实时市场数据的问题

Python - Kivy - Python 在安装 kivy 期间停止工作

Python+kivy+SQLite:如何一起使用