Skip to content

Affichage de cartes interactives dans Streamlit : Tutoriels et exemples faciles | st.map

Updated 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 Cómo explorar datos con PyGWalker en Python (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 :

Visualiser les données dans Streamlit avec PyGWalker (opens in a new tab)

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.