[Python] J'ai écrit un test de "Streamlit" qui facilite la création d'applications de visualisation.

introduction

Lors de la création d'une application Web avec des graphiques basés sur Python, j'ai utilisé la combinaison de la bibliothèque de graphiques Plotly + framework d'application Web Dash by Plotly. Cependant, cette fois, j'ai rencontré une grande recrue Streamlit avec un grand potentiel pour menacer la position de Dash, donc je vais déposer un mémo écrit comme un test.

Qu'est-ce que «Streamlit»?

Streamlit is an open-source app framework for Machine Learning and Data Science teams. Create beautiful data apps in hours, not weeks. All in pure Python. All for free.

Un framework d'application qui vous permet de créer une application Web avec un seul script Python sans écrire HTML / CSS / JavaScript. Le front-end est fait avec React + Bootstrap, et on peut dire que c'est presque le même type de framework que Dash, y compris le fait que le script Python seul est OK.

Comparé à Dash, Streamlit n'a pas la flexibilité de décider librement du style et de la mise en page. Il n'y a pas d'API à mettre dans des CSS et des styles personnalisés, et la mise en page est fermement décidée par le menu latéral + le modèle de corps. En d'autres termes, puisque le côté framework définit les spécifications, y compris la conception, vous pouvez vous concentrer davantage que «Dash» sur l'écriture de scripts pour le traitement principal du traitement et de l'analyse des données sans le coût de la conception.

En outre, Dash est un cadre d'application Web dédié à Plotly, mais Streamlit prend en charge les bibliothèques de graphiques suivantes.

«Plotly» n'est pas tellement, vous pouvez créer une application Web même dans tous les cas.

Test d'écriture d'un mémo

Installation

$ pip install streamlit

Lancement de la page de démonstration

$ streamlit hello

La page de démonstration sera lancée sur «http: // localhost: 8501 /».

image.png

Ecrire un script

Écrivez un exemple de script qiita.py qui trace les données de Plotly Express. C'est assez simple.

qiita.py


import streamlit as st
import plotly.express as px
import plotly.io as pio

# data
data = px.data.iris()

# sidemenu
st.sidebar.markdown(
    "# Qiita sample"
)
template = st.sidebar.selectbox(
    "Template", list(pio.templates.keys())
)

# body
st.write(
    px.scatter(data, x="sepal_width", y="sepal_length", template=template)
)

Sur le répertoire où se trouve qiita.py

$ streamlit run qiita.py

Lance l'application sur http: // localhost: 8501 /.

image.png

Si vous écrivez dans Dash, vous pouvez écrire des composants HTML à la hâte, et je pense que la quantité de code sera doublée.

Tips

Je vais le mettre à jour de temps en temps.

Si vous voulez vraiment modifier le style

Créez un composant markdown avec st.markdown et écrivez la balise <style> directement tout en donnant true au paramètre ʻunsafe_allow_html`.

st.markdown(
    "<style>h1{color: red}</style>",
    unsafe_allow_html=True
)

C'est un code de magie noire parce que Streamlit n'a pas de bouche de style, mais même si vous consultez la page du forum du corps principal, il semble qu'il n'y en ait que cela,

Ressource distante streamlit run

Par exemple, si vous souhaitez exécuter rapidement le code source téléchargé sur GitHub, Streamlit peut être exécuté comme suit sans clone local.

$ streamlit run https://raw.githubusercontent.com/prs-watch/streamlit-sample/master/sample.py

L'exemple de référentiel illustré ci-dessus est ici.

Résumé

Étant donné que le coût de conception peut être réduit, vous pouvez créer une application Web rapidement avec une petite quantité de code. Le design fourni est simple et je l'aime bien. Dash a les bons points de Dash, et Streamlit lui-même n'a pas été publié dans la version majeure, mais il est très utile si vous voulez créer une application facilement.

Le niveau de recommandation est élevé, donc si vous voulez faire un tableau de bord, par exemple, pourquoi ne pas écrire un test une fois?

Recommended Posts

[Python] J'ai écrit un test de "Streamlit" qui facilite la création d'applications de visualisation.
J'ai essayé de créer un site qui permet de voir facilement les informations mises à jour d'Azure
J'ai écrit une classe qui facilite l'écriture en spécifiant les paroles de la partie lors de l'utilisation de Mecab avec python
Une histoire qui facilite l'estimation de la surface habitable à l'aide d'Elasticsearch et de Python
Un script qui facilite la création de menus riches avec l'API de messagerie LINE
J'ai essayé de créer une liste de nombres premiers avec python
Créez une page Web qui exécute un modèle qui augmente la résolution de l'image à l'aide de gradio, ce qui facilite la création d'un écran Web
Un mémo que j'ai écrit un tri rapide en Python
Je veux créer une fenêtre avec Python
J'ai essayé de créer une classe qui peut facilement sérialiser Json en Python
Quand j'ai essayé de créer un environnement virtuel avec Python, cela n'a pas fonctionné
Je souhaite créer une application WEB en utilisant les données de League of Legends ①
Fileinput, un module qui facilite l'écriture de programmes de filtrage de type Perl en Python
[Python] J'ai essayé de créer automatiquement un rapport quotidien de YWT avec la messagerie Outlook
Créez rapidement un tableau de bord d'analyse de données Python avec Streamlit et déployez-le sur AWS
J'ai écrit du code Python pour créer un diagramme de dépendance de table (vue) (PlantUML) à partir de SQL
J'ai écrit rapidement un programme pour étudier la DI avec Python ①
Je veux démarrer beaucoup de processus à partir de python
J'ai créé une fonction pour découper l'image de python openCV, alors veuillez l'utiliser.
Création d'un outil qui facilite la définition des paramètres des modèles d'apprentissage automatique
J'ai écrit un doctest dans "J'ai essayé de simuler la probabilité d'un jeu de bingo avec Python"
J'ai écrit un script pour créer rapidement un environnement de développement pour Twitter Bot avec AWS Lambda + Python 2.7
[Python3] Liste des sites auxquels j'ai fait référence lorsque j'ai lancé Python
Vue d'ensemble de l'environnement virtuel Python et comment le créer
Une histoire sur l'écriture d'AWS Lambda et de devenir un peu accro aux valeurs par défaut des arguments Python
J'ai essayé de créer un environnement serveur qui fonctionne sous Windows 10
Je souhaite utiliser un caractère générique que je souhaite décortiquer avec Python remove
J'ai essayé de créer une expression régulière de "montant" en utilisant Python
J'ai essayé de créer une expression régulière de "temps" en utilisant Python
[Python] Un mémo que j'ai essayé de démarrer avec asyncio
Qiskit: Je veux créer un circuit qui crée des états arbitraires! !!
J'ai essayé de créer une expression régulière de "date" en utilisant Python
J'ai écrit une fonction pour charger le script d'extension Git en Python
Comment créer une grande quantité de données de test dans MySQL? ??
Je veux créer un fichier pip et le refléter dans le menu fixe
[python] Une note que j'ai commencé à comprendre le comportement de matplotlib.pyplot
[Python] Un programme qui fait pivoter le contenu de la liste vers la gauche
5 façons de créer un chatbot Python
Notez que je comprends l'algorithme du classificateur Naive Bayes. Et je l'ai écrit en Python.
J'ai écrit un code pour convertir quaternion en angle de graissage de type z-y-x avec Python
[Python] J'ai fait un décorateur qui ne semble pas avoir d'utilité.
J'ai créé une application Web en Python qui convertit Markdown en HTML
J'ai essayé de créer un programme qui convertit les nombres hexadécimaux en nombres décimaux avec python
[Python] Un programme qui calcule le nombre de chaussettes jumelées
[Python] J'ai écrit un code simple qui génère automatiquement AA (Ascii Art)
J'ai créé un bot Discord en Python qui se traduit quand il réagit
Un mémorandum sur la façon d'écrire des pandas que j'ai tendance à oublier personnellement
J'ai écrit un lecteur de corpus qui lit les résultats de l'analyse MeCab
J'ai essayé de développer un formateur qui génère des journaux Python en JSON
Je veux colorer une partie de la chaîne Excel avec Python
Comment créer un wrapper qui préserve la signature de la fonction à envelopper
[Outlook] J'ai essayé de créer automatiquement un e-mail de rapport quotidien avec Python
J'ai fait un programme pour vérifier la taille d'un fichier avec Python
Lecture de code de faker, une bibliothèque qui génère des données de test en Python
[Python] [Word] [python-docx] Essayez de créer un modèle de phrase de mot en Python en utilisant python-docx
J'ai créé un exemple pour accéder à Salesforce en utilisant Python et Bottle
J'ai essayé de vérifier le résultat du test A / B avec le test du chi carré