python-3.x - 如何在我的 main.py 和 kv 文件中添加条形图?
问题描述
我想添加一个仅显示在进度屏幕上的条形图。我是 Kivy 和 Python 的新手。我正在使用 matplotlib 作为条形图。我想将 Bar.py 代码集成到我的 main.py 代码和 progress.kv 文件中。我被困在如何将它添加到我的 Progress.kv 文件中。
巴.py
这是我要显示的条形图的代码。
import matplotlib.pyplot as plt
x = [2,4,6,8,10]
y = [6,7,8,2,4]
x2 = [1,3,5,7,9]
y2 = [7,8,2,4,2]
plt.bar(x,y, label='Bars1', color='blue')
plt.bar(x2,y2, label='Bars2', color='c')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Interesting Graph\nCheck It out')
plt.legend()
plt.show()
主文件
我想将条形图代码添加到“进度屏幕”而不是通过。
from kivy.app import App
#kivy.require("1.10.0")
from kivy.uix.screenmanager import ScreenManager, Screen,
SlideTransition
from kivy.properties import ObjectProperty
from kivy.properties import ListProperty
from kivy.uix.image import Image
from kivy.uix.label import Label
from kivy.graphics import *
from kivy.core.window import Window
from kivy.uix.widget import Widget
from kivy.uix.gridlayout import GridLayout
from kivy.uix.boxlayout import BoxLayout
from kivy.config import Config
from kivy.lang import Builder
import numpy as np
from math import sin
import matplotlib.pyplot as plt
from kivy.garden.matplotlib.backend_kivyagg import
FigureCanvasKivyAgg
import matplotlib
from kivy.garden.matplotlib import FigureCanvasKivyAgg
#Screens created in kv file. Declare all screens for app.
class Login(Screen):
pass
class Connected(Screen):
pass
class Patient(Screen):
pass
class Progress(Screen):
pass
class Goals(Screen):
pass
class Training(Screen):
pass
class Range(Screen):
pass
class Trial(Screen):
pass
class Symmetry(Screen):
pass
class Coordination(Screen):
pass
class Help(Screen):
pass
class Manager(ScreenManager):
pass
class ScreenApp(App):
def build(self):
m = Manager(transition=SlideTransition())
return m
if __name__ == '__main__':
#sets pixels to pixels on Raspberry Pi tablet
Config.set('graphics', 'fullscreen', '0')
Config.set('graphics', 'width', '800')
Config.set('graphics', 'height', '480')
ScreenApp().run()
进度.kv
我在 kv 文件中有进度屏幕的所有代码。我想在这里添加设计和细节,但如果没有,那么在 main.py 中。
import matplotlib.pyplot as plt
<Progress>:
canvas.before:
Color:
rgb: 1, 1, 1
Rectangle:
pos: self.pos
size: self.size
Button:
text:'Patient Menu'
font_size: 20
bold: True
size_hint: None, None
size: 300, 50
pos_hint: {'center_x': .5, 'center_y': .1 }
color: 1, 1, 1, 1
on_press: root.manager.current = 'Patient'
解决方案
条形图的 Progress.kv 文件
#:import MeshLinePlot kivy.garden.graph.MeshLinePlot
#:import get_color_from_hex kivy.utils
<Progress>:
BoxLayout:
orientation: 'vertical'
padding: [10,20,10,20]
spacing: 20
Graph:
height:1000
width:1000
id: graph_test
xlabel:'Algorithms'
ylabel:'Accuracy'
x_ticks_minor:5
x_tics_major:25
y_ticks_major:1
y_grid_label:True
x_grid_label:True
padding:5
x_grid:True
y_grid:True
xmin:-0
xmax:3
ymin:0
ymax:100
pos: 0, root.height
size: root.width, root.height
进度的 Python 代码
import itertools
from kivy.app import App
from kivy.utils import get_color_from_hex as rgb
from kivy.uix.screenmanager import Screen, SlideTransition
from kivy.properties import StringProperty,ObjectProperty
from math import sin
from kivy.garden.graph import Graph, MeshLinePlot, BarPlot
colors = itertools.cycle([rgb('7dac9f'), rgb('dc7062'), rgb('66a8d4'), rgb('e5b060')])
class Progress(Screen):
def assign(self):
super(Progress,self).__init__()
self.sensorEnabled = True
self.graph= self.ids.graph_test
self.plot = []
self.plot.append(BarPlot(color=next(colors),bar_spacing=.72)) #x - Red
self.plot.append(BarPlot(color=next(colors),bar_spacing=.72)) # Y - Green
self.plot.append(BarPlot(color=next(colors),bar_spacing=.72)) # Z - Blue
self.reset_plots(self.graph)
for plot in self.plot:
self.graph.add_plot(plot)
def reset_plots(self,graph):
for plot in self.plot:
plot.bind_to_graph(graph)
plot.points = []
self.counter = 1
推荐阅读
- google-analytics - 使 Google Analytics 匿名
- rust - How do I form a slice from a HashSet?
- bash - Sed/Awk: Delete all lines after last occurrence of pattern
- python - Python:使用来自 python 的标准输入运行 bash 脚本
- string - 从字节缓冲区传输到 AnsiString 时丢失数据
- linux - 使 Qt GUI 应用程序在 Linux 中的帧缓冲区上运行
- visual-studio-2012 - Visual Studio 2013 支持哪个版本的 Insight 工具包?
- r - 如何提取数据框列表中的列名?
- sql-server - 比较架构忽略架构名称
- c - 在 RHEL 服务器中编译 C 文件时出错