如何在Kivy中添加Matplotlib图表?
将 Matplotlib 图表集成或添加到 Kivy 应用程序中可以帮助开发人员创建更具信息性和吸引力的用户界面。Kivy 是一个开源的 Python 框架,用于开发移动和桌面应用程序,而 Matplotlib 是一个数据可视化库,用于创建图表、图形和其他可视化效果。在本文中,我们将探讨在 Kivy 中添加 Matplotlib 图表所涉及的步骤。
如何在 Kivy 中添加 Matplotlib 图表?
以下是我们将遵循的步骤,以便在 Kivy 中添加 Matplotlib 图表:
步骤 1
创建一个虚拟环境。您可以将虚拟环境命名为任何您想要的名字,在本篇文章中,我们将将其命名为 kivy_venv。使用以下代码创建虚拟环境:
以下是确保您已更新 pip、wheel 和 virtualenv 的代码:
python -m pip install --upgrade pip wheel setuptools virtualenv
在当前目录中,创建一个名为 kivy_venv 的虚拟环境。
python -m virtualenv kivy_venv
激活虚拟环境。
kivy_venv\Scripts\activate
步骤 2
安装 matplotlib、kivy 和 kivy_garden:
在开始将 Matplotlib 图表集成或添加到 Kivy 之前,我们需要安装所需的库。我们可以使用 pip 安装 Matplotlib、kivy 和其他依赖项。要安装 matplotlib,请在 Windows 的命令提示符中使用以下命令:
如果以上代码出现错误,请尝试以下代码
pip install --upgrade matplotib
pip install matplotib
要安装 Kivy,请在 Windows 的终端中使用以下命令:
pip install kivy
要安装 kivy_garden,请在 Windows 的终端中使用以下命令:
pip install kivy_garden
要安装 Kivy 的依赖项和其他模块,请参阅 Kivy 的安装指南:此处
对于本文,我们使用 Sublime Text 作为文本编辑器,并使用命令提示符运行 Python 文件。
步骤 3
打开 Sublime Text 编辑器并添加一个新文件,将文件保存为 file_name.py,文件应为 .py 扩展名。
现在,让我们创建一个 Kivy 应用程序。打开您喜欢的文本编辑器并创建一个名为“mappy.py”的新文件。此文件将定义 Kivy 应用程序及其用户界面。以下是基本 Kivy 应用程序的代码:
接下来一步是创建一个 kivy 应用程序。为此,请在本篇文章中打开您喜欢的文本编辑器,我们将使用 Sublime Text 编辑器并创建一个名为“main.py”的新文件,确保文件应为 .py 扩展名,但文件名可以是您想要的任何名称。在此特定文件中,我们将定义 Kivy 应用程序及其用户界面。以下是基本 kivy 应用程序的代码:
from kivy.lang import Builder from kivymd.app import MDApp from kivy.uix.floatlayout import FloatLayout from kivy.garden.matplotlib.backend_kivyagg import FigureCanvasKivyAgg import matplotlib.pyplot as plt class MainApp(MDApp): def build(self): self.theme_cls.theme_style = "Dark" self.theme_cls.primary_palette="BlueGray" MainApp().run()
在上面的代码中,我们导入了所需的 kivy 模块,定义了继承自“App”类的“MyApp”类,并定义了返回 BoxLayout 的“build”方法。
步骤 4
在此步骤中,我们将添加 Matplot 到 kivy。
我们将 Matplotlib 添加到 kivy 应用程序中。为此,我们需要创建一个 Matplotlib 图形并将其添加到 kivy 应用程序的用户界面中。以下是将 matplotlib 图形添加到 kivy 应用程序的代码。
from kivy.lang import Builder from kivymd.app import MDApp from kivy.uix.floatlayout import FloatLayout from kivy.garden.matplotlib.backend_kivyagg import FigureCanvasKivyAgg import matplotlib.pyplot as plt #define what we want to graph x=[11,22,33,44,55,66,77,88,99,100] y=[12,6,9,15,23,67,11,90,34,91] plt.plot(x,y) plt.ylabel("Y axis") plt.xlabel("X axis") class MainApp(MDApp): def build(self): self.theme_cls.theme_style = "Dark" self.theme_cls.primary_palette="BlueGray" MainApp().run()
在上面的代码中,我们导入了 Matplotlib 的 pyplot 模块并创建了一个图形和轴。我们还从“kivy.garden.matplotlib.backend_kivyagg”模块导入了 FigureCanvas 小部件。此小部件允许我们将 Matplotlib 图形添加到 Kivy 应用程序的用户界面中。最后,我们创建了一个 BoxLayout 并将 FigureCanvas 小部件添加到其中。
步骤 5
在下一步中,我们将通过创建具有 .kv 扩展名的设计文件来自定义和设计我们的应用程序和 matplotlib 图表。创建一个新文件并将文件命名为“mappy.kv”。以下是执行此操作的代码:
<Matty> BoxLayout: id:box size_hint_y: .8 pos_hint: {"top":1} BoxLayout: size_hint_y: .2 TextInput: id:namer multiline: False Button: text: "Save It....." on_release: root.saveit()
以下是“mappy.py”和“mappy.kv”这两个文件的代码。
程序(“mappy.py”文件)
from kivy.lang import Builder from kivymd.app import MDApp from kivy.uix.floatlayout import FloatLayout from kivy.garden.matplotlib.backend_kivyagg import FigureCanvasKivyAgg import matplotlib.pyplot as plt #define what we want to graph x=[11,22,33,44,55,66,77,88,99,100] y=[12,6,9,15,23,67,11,90,34,91] plt.plot(x,y) plt.ylabel("Y axis") plt.xlabel("X axis") #Build our app class Matty(FloatLayout): def __init__(self,**kwargs): super().__init__(**kwargs) box=self.ids.box box.add_widget(FigureCanvasKivyAgg(plt.gcf())) def save_it(self): pass class MainApp(MDApp): def build(self): self.theme_cls.theme_style = "Dark" self.theme_cls.primary_palette="BlueGray" Builder.load_file('matty.kv') return Matty() MainApp().run()
程序(“mappy.kv”文件)
<Matty> BoxLayout: id:box size_hint_y: .8 pos_hint: {"top":1} BoxLayout: size_hint_y: .2 TextInput: id:namer multiline: False Button: text: "Save It....." on_release: root.saveit()
打开命令提示符并转到保存“mappy.py”文件的目录。在命令提示符中输入以下命令。
python mappy.py
这里 kivy_venv 是虚拟环境。
输出
结论
总之,将 Matplotlib 图表集成或添加到 Kivy 应用程序中可以帮助开发人员创建更具信息性和吸引力的用户界面。在本文中,我们学习了如何在 Kivy 中添加 Matplotlib 图表。我们还了解了如何使用设计文件自定义和设计 Matplotlib 图表。通过遵循本文中概述的步骤,开发人员可以轻松地将 Matplotlib 图表集成到他们的 Kivy 应用程序中,并创建更具视觉吸引力的用户界面。