Hoy compartiré con ustedes una herramienta para hacer una pantalla de datos grande, es muy fácil de usar Python
, se puede hacer una pantalla de datos grande completa con alrededor de 100 líneas de código, y la lógica del código es muy fácil de entender.
PywebIO
introducir
Python
Los PywebIO
módulos que contiene pueden ayudar a los desarrolladores a crear rápidamente aplicaciones o aplicaciones basadas en navegador sin HTML
tener unJavaScript
Web
GUI
PywebIO
Primero instalemos los módulos que necesitamos usar
pip install pywebio
pip install cutecharts
cutecharts
El módulo mencionado anteriormente es Python
un artefacto visual de estilo pintado a mano. Creo que no está familiarizado con él. Echemos un vistazo al PywebIO
efecto de dibujar un gráfico en combinación con el módulo. El código es el siguiente
from cutecharts.charts import Bar
from cutecharts.faker import Faker
from pywebio import start_server
from pywebio.output import put_html
def bar_base():
chart = Bar("Bar-基本示例", width="100%")
chart.set_options(labels=Faker.choose(), x_label="I'm xlabel", y_label="I'm ylabel")
chart.add_series("series-A", Faker.values())
put_html(chart.render_notebook())
if __name__ == '__main__':
start_server(bar_base, debug=True, port=8080)
producción
La lógica del código anterior no es difícil de entender. Primero crea una instancia de un Bar()
objeto de histograma, luego completa X
la etiqueta correspondiente al Y
eje y el valor del eje correspondiente, y finalmente llama PywebIO
al método en el módulo put_html()
, veremos unURL
Ingrese esto en el navegador URL
para ver el gráfico que dibujamos. Por supuesto cutecharts
, hay un método en el módulo Page()
para conectar todos los gráficos para hacer una gran pantalla visual. El código es el siguiente
def bar_base():
chart = Bar("Bar-基本示例", width="100%")
chart.set_options(labels=Faker.choose(), x_label="I'm xlabel", y_label="I'm ylabel")
chart.add_series("series-A", Faker.values())
return chart
def pie_base() -> Pie:
chart = Pie("标题", width="100%")
........
return chart
def radar_base() -> Radar:
chart = Radar("标题", width="100%")
......
return chart
def line_base() -> Line:
chart = Line("标题", width="100%")
......
return chart
def main():
page = Page()
page.add(pie_base(), pie_base(), radar_base(), line_base(), bar_base())
put_html(page.render_notebook())
if __name__ == '__main__':
start_server(main, debug=True, port=8080)
producción
PywebIO
Pyecharts
combinación de y
Cuando un PywebIO
módulo encuentra Pyecharts
un módulo, la lógica del código es básicamente cutecharts
la misma, primero crea una instancia de un objeto de gráfico, luego, después de agregar datos y configurar el estilo del gráfico, y finalmente llamar put_html()
al método para representar el resultado final en el navegador .
# `chart` 是你的图表的实例
pywebio.output.put_html(chart.render_notebook())
En este caso, llamamos a Pyecharts
los componentes combinados para presentar el gráfico dibujado respectivamente.El código es el siguiente
def bar_plots():
bar = (
Bar()
.add_xaxis(Faker.choose())
.add_yaxis("商家A", Faker.values())
.add_yaxis("商家B", Faker.values())
.set_global_opts(title_opts=opts.TitleOpts(title="Grid-Bar"))
)
return bar
def line_plots():
line = (
Line()
.add_xaxis(Faker.choose())
.add_yaxis("商家A", Faker.values())
.add_yaxis("商家B", Faker.values())
.set_global_opts(
title_opts=opts.TitleOpts(title="Grid-Line", pos_top="48%"),
legend_opts=opts.LegendOpts(pos_top="48%"),
)
)
return line
def main():
c = (
Grid()
.add(bar_plots(), grid_opts=opts.GridOpts(pos_bottom="60%"))
.add(line_plots(), grid_opts=opts.GridOpts(pos_top="60%"))
)
c.width = "100%"
put_html(c.render_notebook())
if __name__ == '__main__':
start_server(main, debug=True, port=8080)
producción
PywebIO
Bokeh
combinación de y
PywebIO
La combinación de y Bokeh
será ligeramente diferente de la anterior en términos de sintaxis de código, y las diferencias específicas son las siguientes
from bokeh.io import output_notebook
from bokeh.io import show
output_notebook(notebook_type='pywebio')
fig = figure(...)
...
show(fig)
Por ejemplo, dibujemos un histograma simple, el código es el siguiente
def bar_plots():
output_notebook(notebook_type='pywebio')
fruits = ['Apples', 'Pears', 'Nectarines', 'Plums', 'Grapes', 'Strawberries']
counts = [5, 3, 4, 2, 4, 6]
p = figure(x_range=fruits, plot_height=350, title="Fruit Counts",
toolbar_location=None, tools="")
p.vbar(x=fruits, top=counts, width=0.9)
p.xgrid.grid_line_color = None
p.y_range.start = 0
show(p)
if __name__ == "__main__":
start_server(bar_plots, debug=True, port=8080)
producción
GUI
aplicación basada en navegador
Además de combinar el Pywebio
módulo con los módulos de visualización de uso común para dibujar varios gráficos, también podemos usarlo para construir una interfaz gráfica basada en la navegación. Hagamos primero la aplicación más simple. El código es el siguiente
from pywebio.input import *
from pywebio.output import *
data = input_group(
"用户数据",
[
input("请问您的名字是: ", name="name", type=TEXT),
input("输入您的年龄", name="age", type=NUMBER),
radio(
"哪个洲的",
name="continent",
options=[
"非洲",
"亚洲",
"澳大利亚",
"欧洲",
"北美洲",
"南美洲",
],
),
checkbox(
"用户隐私条例", name="agreement", options=["同意"]
),
],
)
put_text("表格输出:")
put_table(
[
["名字", data["name"]],
["年龄", data["age"]],
["位置", data["continent"]],
["条例", data["agreement"]],
]
)
producción
Algunos de los métodos de función se explican a continuación:
-
input()
: Entrada de contenido de texto -
radio()
: representa un botón de opción -
checkbox()
: representa un cuadro de selección múltiple -
input_group()
: representa el grupo de entrada -
put_table()
: representa el grupo de salida -
put_text()
: representa el texto de salida
Aquí me gustaría recomendar el grupo Q de aprendizaje de Python que construí yo mismo: 831804576. Todos en el grupo están aprendiendo Python. Si quieres aprender o estás aprendiendo Python, eres bienvenido a unirte. Todos son un grupo de desarrollo de software y comparten productos secos de vez en cuando (solo relacionado con el desarrollo de software de Python),
incluida una copia de los últimos materiales avanzados de Python y enseñanza basada en cero en 2021 que he compilado yo mismo. Bienvenidos a los socios medianos y pequeños avanzados que están interesados en ¡Pitón!