Affichage de cartes interactives dans Streamlit : Tutoriels et exemples faciles | st.map
Published on
Streamlit a révolutionné la façon dont nous construisons les applications de données. C'est une puissante bibliothèque Python open-source qui permet aux scientifiques des données et aux développeurs de créer facilement des applications web interactives. Une de ses fonctionnalités les plus intéressantes est st.map
, une fonction qui permet aux utilisateurs de créer et d'afficher des cartes interactives. Cet article plongera dans les spécificités de st.map
, en fournissant des exemples pratiques et des tutoriels pour améliorer vos compétences en visualisation de données.
Dans le monde de l'analyse de données et de l'apprentissage automatique, les données de localisation jouent un rôle crucial. Que ce soit pour tracer la propagation d'une maladie, analyser les modèles de trafic ou comprendre les caractéristiques démographiques des clients, les cartes fournissent une représentation visuelle facile à comprendre et à interpréter. La fonction st.map
de Streamlit est un outil qui facilite l'affichage de ces données de localisation.
Comprendre st.map dans Streamlit
Qu'est-ce que st.map dans Streamlit ?
Dans Streamlit, st.map
est une fonction qui vous permet de créer une carte et de tracer des points de données dessus. C'est un wrapper autour de la bibliothèque folium
, une puissante bibliothèque Python utilisée pour visualiser les données géospatiales. La fonction st.map
prend un DataFrame pandas qui a soit des colonnes nommées "lat" et "lon", soit "latitude" et "longitude", et le trace sur une carte.
import streamlit as st
import pandas as pd
## Créer un DataFrame d'échantillon avec des valeurs de latitude et de longitude
data = pd.DataFrame({
'latitude': [37.7749, 34.0522, 40.7128],
'longitude': [-122.4194, -118.2437, -74.0060]
})
## Créer une carte avec les données
st.map(data)
Ce simple morceau de code créera une carte et tracera les points de données du DataFrame dessus. La carte se centrera automatiquement autour des points de données et ajustera le niveau de zoom en conséquence.
Afficher des cartes dans Streamlit
Afficher des cartes dans Streamlit est aussi simple que d'appeler la fonction st.map
avec les données appropriées. Cependant, pour tirer le meilleur parti de cette fonctionnalité, il est important de comprendre comment manipuler les données et personnaliser la carte en fonction de vos besoins.
Par exemple, vous pouvez ajuster manuellement le niveau de zoom de la carte en passant une valeur entière au paramètre zoom
. Une valeur plus élevée zoomera plus près des points de données, tandis qu'une valeur plus basse dézoomera.
## Créer une carte avec un niveau de zoom spécifié
st.map(data, zoom=10)
Ajout de cartes GeoJSON à une application Streamlit
Qu'est-ce que GeoJSON ?
GeoJSON est un format pour encoder une variété de structures de données géographiques. Il prend en charge une variété de types de données géographiques, dont Point, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon et GeometryCollection. GeoJSON utilise la norme JSON pour créer des cartes, ce qui le rend facile à utiliser dans une grande variété d'applications.
Comment ajouter des cartes GeoJSON à une application Streamlit
Pour ajouter des cartes GeoJSON à votre application Streamlit, vous devez d'abord lire les données GeoJSON dans un DataFrame, puis passer ce DataFrame à la fonction st.map
. Voici un exemple de comment vous pouvez le faire :
import geopandas as gpd
# Lire les données GeoJSON dans un GeoDataFrame
gdf = gpd.read_file('chemin_vers_votre_fichier_geojson.geojson')
# Convertir le GeoDataFrame en DataFrame
df = pd.DataFrame(gdf)
# Créer une carte avec les données GeoJSON
st.map(df)
Dans cet exemple, nous utilisons la bibliothèque geopandas
pour lire les données GeoJSON dans un GeoDataFrame. Nous convertissons ensuite ce GeoDataFrame en un DataFrame pandas ordinaire, que nous pouvons passer à la fonction st.map
.
Amélioration des cartes avec les fonctionnalités de st.map
La fonction st.map
de Streamlit est dotée d'une variété de fonctionnalités qui vous permettent d'améliorer vos cartes. Cela inclut l'ajout de marqueurs personnalisés, l'ajustement du niveau de zoom et la centrage automatique de la carte autour de vos points de données.
Ajout de marqueurs personnalisés
L'ajout de marqueurs personnalisés à votre carte peut vous aider à mettre en évidence des points de données spécifiques. Pour ajouter des marqueurs personnalisés, vous devez créer un DataFrame séparé qui contient les valeurs de latitude et de longitude des points que vous souhaitez mettre en évidence.
# Créer un DataFrame avec les points que vous souhaitez mettre en évidence
highlight = pd.DataFrame({
'latitude': [37.7749],
'longitude': [-122.4194]
})
# Ajouter les points de mise en évidence à la carte
st.map(data, highlight)
Dans cet exemple, nous mettons en évidence un seul point sur la carte. Le DataFrame highlight
contient les valeurs de latitude et de longitude de ce point. Nous passons ensuite ce DataFrame à la fonction st.map
avec nos données d'origine.
Zoom et centrage automatiques
La fonction st.map
centre automatiquement la carte autour de vos points de données et ajuste le niveau de zoom pour inclure tous les points. Cependant, vous pouvez également ajuster manuellement le niveau de zoom et le centrage de la carte.
# Créer une carte avec un niveau de zoom et un centrage spécifiés
st.map(data, zoom=10, center=[37.7749, -122.4194])
Dans cet exemple, nous fixons le niveau de zoom à 10 et centrons la carte autour des coordonnées [37.7749, -122.4194]. Le paramètre center
prend une liste de deux valeurs : la latitude et la longitude du point autour duquel vous voulez centrer la carte.
Résolution des problèmes avec st.map
Bien que st.map
soit un outil puissant, vous pouvez rencontrer quelques problèmes lors de son utilisation. Un problème courant est l'erreur "st.map ne fonctionne pas". Cela se produit généralement lorsque le DataFrame passé à st.map
ne contient pas les colonnes correctes ou que les colonnes ne sont pas nommées correctement. N'oubliez pas que st.map
exige un DataFrame avec soit les colonnes nommées "lat" et "lon", soit "latitude" et "longitude".
Si vous rencontrez ce problème, vérifiez votre DataFrame pour vous assurer qu'il a les colonnes correctes et qu'elles sont nommées de manière appropriée.
Création de cartes interactives dans Streamlit
Les cartes interactives sont un outil puissant pour la visualisation des données. Elles permettent aux utilisateurs de zoomer et dézoomer, de naviguer à travers différentes régions et même de cliquer sur des points de données pour obtenir plus d'informations. La fonction st.map
de Streamlit facilite la création de ces cartes interactives.
Facilité d'inclusion de cartes interactives
Pour inclure une carte interactive dans votre application Streamlit, il suffit de transmettre un DataFrame contenant des valeurs de latitude et de longitude à la fonction st.map
. Cependant, il est également possible d'améliorer vos cartes en ajoutant des fonctionnalités interactives telles que des marqueurs personnalisés, des informations contextuelles, et bien plus encore.
Par exemple, vous pouvez ajouter une fenêtre contextuelle qui affiche plus d'informations sur un point de données lorsqu'il est cliqué. Cela peut être fait en ajoutant une colonne supplémentaire à votre DataFrame avec les informations que vous souhaitez afficher.
# Ajouter une colonne supplémentaire pour les informations contextuelles
data['info'] = ['San Francisco', 'Los Angeles', 'New York']
# Créer une carte avec les données
st.map(data)
Dans cet exemple, lorsqu'un point de données est cliqué, le nom de la ville est affiché.
Affichage de cartes avec Streamlit et Folium
Bien que st.map
soit un outil puissant pour créer des cartes, il est également possible d'utiliser d'autres bibliothèques comme Folium pour créer des cartes plus complexes. Folium est une bibliothèque Python qui vous permet de créer des cartes interactives en utilisant Leaflet.js, une bibliothèque JavaScript open-source populaire pour les cartes interactives adaptées aux mobiles.
Pour afficher une carte Folium dans Streamlit, vous pouvez utiliser la fonction st.pydeck_chart
. Voici un exemple :
import folium
# Créer une carte Folium
m = folium.Map(location=[37.7749, -122.4194], zoom_start=10)
# Afficher la carte dans Streamlit
st.pydeck_chart(m)
Dans cet exemple, nous créons une carte Folium centrée sur les coordonnées [37.7749, -122.4194] avec un niveau de zoom de 10. Nous affichons ensuite cette carte dans Streamlit en utilisant la fonction st.pydeck_chart
.
Ceci n'est que la partie émergée de l'iceberg lorsqu'il s'agit de créer des cartes interactives dans Streamlit. Avec la puissance de Python et des bibliothèques telles que Streamlit et Folium, les possibilités sont infinies. Que vous soyez un scientifique des données cherchant à visualiser vos données ou un développeur construisant une application web axée sur les données, les cartes interactives sont un outil puissant à avoir dans votre arsenal.
Améliorer votre visualisation des données avec Streamlit
La fonction st.map
de Streamlit est un outil puissant pour la visualisation des données. En vous permettant de créer des cartes interactives, elle représente visuellement vos données de manière claire et compréhensible. Cette section explorera certaines fonctionnalités avancées de st.map
et comment vous pouvez les utiliser pour améliorer votre visualisation des données.
Fonctionnalités avancées de st.map
L'une des fonctionnalités clés de st.map
est sa capacité à traiter de grands ensembles de données. Elle peut tracer efficacement des milliers de points de données sur une carte sans ralentir votre application. Cela en fait un outil idéal pour la visualisation de grands ensembles de données.
Une autre fonctionnalité avancée de st.map
est sa compatibilité avec d'autres bibliothèques Python. Vous pouvez utiliser des bibliothèques telles que pandas
pour la manipulation de données, numpy
pour les calculs numériques, et matplotlib
pour des options de visualisation supplémentaires. Cette interopérabilité fait de st.map
un outil polyvalent pour la visualisation des données.
Exemples de visualisation des données avec st.map
Pour illustrer la puissance de st.map
, examinons quelques exemples de visualisation des données. Supposons que nous disposions d'un jeu de données des annonces Airbnb à New York. Nous pouvons utiliser st.map
pour représenter ces annonces sur une carte et obtenir des informations sur la répartition des annonces Airbnb dans la ville.
# Charger le jeu de données
data = pd.read_csv('nyc_airbnb_listings.csv')
# Créer une carte avec les données
st.map(data)
Dans cet exemple, chaque point de données sur la carte représente une annonce Airbnb. En visualisant ces données sur une carte, nous pouvons facilement voir les zones de New York où il y a le plus d'annonces Airbnb.
Créer facilement des visualisations interactives des données avec PyGWalker dans Streamlit
PyGWalker (opens in a new tab) est également un autre outil formidable qui fonctionne à merveille comme alternative à Streamlit AgGrid.
Démonstration en ligne de PyGWalker + Streamlit (opens in a new tab)
PyGWalker (opens in a new tab) est une bibliothèque Python qui vous permet d'intégrer facilement une interface utilisateur similaire à Tableau dans votre propre application Streamlit sans effort.
Consultez cette vidéo incroyable produite par Sven de Coding is Fun (opens in a new tab) qui présente les étapes détaillées pour donner à votre application Streamlit ce puissant Data Visualization Python Library !
Un grand merci à Sven et sa formidable contribution (opens in a new tab) à la communauté PyGWalker !
Vous pouvez également consulter ces ressources :
- Comment explorer les données et partager des résultats avec Pygwalker et Streamlit (opens in a new tab)
- Page GitHub de PyGWalker (opens in a new tab) pour plus d'exemples PyGWalker.
Conclusion
La fonction st.map
de Streamlit est un outil puissant pour la création de cartes interactives et la visualisation des données géospatiales. Que vous soyez un scientifique des données cherchant à visualiser vos données ou un développeur construisant une application web axée sur les données, st.map
offre un moyen simple et efficace de créer des cartes interactives. Avec ses fonctionnalités avancées et sa compatibilité avec d'autres bibliothèques Python, st.map
est un outil polyvalent qui peut améliorer votre visualisation et votre analyse des données.
Questions fréquentes
Comment créer une carte dans Streamlit?
Il est simple de créer une carte dans Streamlit. Vous devez avoir un DataFrame pandas qui contient des valeurs de latitude et de longitude. Vous pouvez ensuite passer ce DataFrame à la fonction st.map
pour créer une carte.
Comment créer une carte de localisation interactive?
Vous pouvez créer une carte de localisation interactive dans Streamlit en utilisant la fonction st.map
. Cette fonction crée une carte et y trace des points de données. La carte est interactive, ce qui signifie que vous pouvez zoomer et dézoomer et vous déplacer dans différentes régions. Vous pouvez également ajouter des marqueurs personnalisés et des informations contextuelles pour améliorer l'interactivité de la carte.
Est-ce que Streamlit a une API?
Oui, Streamlit a une API simple et intuitive qui vous permet de créer des applications web interactives. L'API propose une variété de fonctions pour créer différents types de visualisations, y compris des cartes, des graphiques et des tableaux. Vous pouvez également utiliser l'API pour ajouter de l'interactivité à votre application, comme des boutons, des curseurs et des champs de saisie de texte.