Shinylive-python

python
2023
Author

José Luis Cañadas Reche

Published

September 29, 2023

Modified

December 13, 2023

Ayer asistí a una charla de David Durey en el grupo de R-madrid. Era sobre como migraron de Tableau a Shiny y fue una charla excepcional, gracias David.

En shiny está habiendo avances, tales como shiny en python o la extensión shinylive para Quarto. Está extensión permite ejecutar código de python y de R (pero está más avanzado en python) en el navegador, gracias a WebAssembly que permite correr ese código en el navegador en vez de tener un servidor corriendo

Así que ni corto ni perezoso, voy a probarlo, copiando un código de ejemplo y poniendo una aplicación shiny dentro de este documento. Si la ves y se ejecuta, que sepas que no hay un servidor detrás y que eres tú en tu navegador quién está ejecutando esta aplicación de shiny para python.

Caution

Después de desplegar en netlify parece que no funciona. Si a alguien le va que lo ponga en los comentarios

#| standalone: true
#| components: [editor, viewer]
import matplotlib.pyplot as plt
import numpy as np
from shiny import App, render, ui

app_ui = ui.page_fluid(
    ui.layout_sidebar(
        ui.panel_sidebar(
            ui.input_slider("n", "N", 0, 100, 20),
        ),
        ui.panel_main(
            ui.output_plot("histogram"),
        ),
    ),
)


def server(input, output, session):
    @output
    @render.plot(alt="A histogram")
    def histogram():
        np.random.seed(19680801)
        x = 100 + 15 * np.random.randn(437)
        plt.hist(x, input.n(), density=True)


app = App(app_ui, server, debug=True)

Para R usaría webry una versión en desarrollo de shinylive que he sido incapaz de compilar correctamente, y mira que se me dan bien estas cosas.

Así que quizá toque esperar un poco y ver como avanzan este tipo de proyectos de ejecutar cosas de python y R e incluso shinyapps en el navegador y por tanto en la máquina del usuario sin necesidad de un servidor.