50 líneas de código Python para hacer una gran pantalla de datos

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.

PywebIOintroducir

PythonLos PywebIOmódulos que contiene pueden ayudar a los desarrolladores a crear rápidamente aplicaciones o aplicaciones basadas en navegador sin HTMLtener unJavaScriptWebGUIPywebIO

Primero instalemos los módulos que necesitamos usar

pip install pywebio
pip install cutecharts

cutechartsEl módulo mencionado anteriormente es Pythonun artefacto visual de estilo pintado a mano. Creo que no está familiarizado con él. Echemos un vistazo al PywebIOefecto 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 Xla etiqueta correspondiente al Yeje y el valor del eje correspondiente, y finalmente llama PywebIOal método en el módulo put_html(), veremos unURL

Ingrese esto en el navegador URLpara 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

PywebIOPyechartscombinación de y

Cuando un PywebIOmódulo encuentra Pyechartsun módulo, la lógica del código es básicamente cutechartsla 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 Pyechartslos 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

PywebIOBokehcombinación de y

PywebIOLa combinación de y Bokehserá 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

GUIaplicación basada en navegador

Además de combinar el Pywebiomó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!

Supongo que te gusta

Origin blog.csdn.net/BYGFJ/article/details/123981959
Recomendado
Clasificación