Skip to content

Exibindo Mapas Interativos no Streamlit: Tutoriais Fáceis e Exemplos | st.map

Updated on

O Streamlit revolucionou a forma como criamos aplicações de dados. É uma poderosa biblioteca open-source do Python que permite aos cientistas de dados e desenvolvedores criar facilmente aplicações web interativas. Uma de suas características mais interessantes é o st.map, uma função que permite aos usuários criar e exibir mapas interativos. Este artigo explora os detalhes do st.map, fornecendo exemplos e tutoriais práticos para aprimorar suas habilidades de visualização de dados.

No mundo da análise de dados e aprendizado de máquina, os dados de localização desempenham um papel crucial. Seja rastreando a propagação de uma doença, analisando padrões de tráfego ou entendendo a demografia dos clientes, os mapas fornecem uma representação visual fácil de entender e interpretar. A função st.map do Streamlit é uma ferramenta que facilita a exibição desses dados de localização.

Compreendendo o st.map no Streamlit

O que é o st.map no Streamlit?

No Streamlit, o st.map é uma função que permite criar um mapa e plotar pontos de dados nele. É uma camada sobre a biblioteca folium, uma poderosa biblioteca do Python usada para visualizar dados geoespaciais. A função st.map recebe um DataFrame do pandas que possui colunas nomeadas "lat" e "lon" ou "latitude" e "longitude" e plota-o em um mapa.

import streamlit as st
import pandas as pd
 
## Crie um DataFrame de exemplo com valores de latitude e longitude
data = pd.DataFrame({
    'latitude': [37.7749, 34.0522, 40.7128],
    'longitude': [-122.4194, -118.2437, -74.0060]
})
 
## Crie um mapa com os dados
st.map(data)

Este código simples irá criar um mapa e plotar os pontos de dados do DataFrame nele. O mapa irá se centrar automaticamente nos pontos de dados e ajustar o nível de zoom de acordo.

Exibindo Mapas no Streamlit

Exibir mapas no Streamlit é tão simples quanto chamar a função st.map com os dados apropriados. No entanto, para aproveitar ao máximo esse recurso, é importante entender como manipular os dados e personalizar o mapa de acordo com suas necessidades.

Por exemplo, você pode ajustar manualmente o nível de zoom do mapa passando um valor inteiro para o parâmetro zoom. Um valor maior aumentará o zoom nos pontos de dados, enquanto um valor menor irá diminuir o zoom.

## Crie um mapa com um nível de zoom especificado
st.map(data, zoom=10)

Adicionando Mapas GeoJSON a um Aplicativo Streamlit

O que é o GeoJSON?

GeoJSON é um formato para codificar uma variedade de estruturas de dados geográficos. Ele suporta vários tipos de dados geográficos, incluindo Ponto, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon e GeometryCollection. O GeoJSON utiliza o padrão JSON para criar mapas, o que torna fácil de usar em uma ampla variedade de aplicações.

Como Adicionar Mapas GeoJSON a um Aplicativo Streamlit

Adicionar mapas GeoJSON ao seu aplicativo Streamlit envolve a leitura dos dados GeoJSON em um DataFrame e, em seguida, passando esse DataFrame para a função st.map. Aqui está um exemplo de como fazer isso:

import geopandas as gpd
 
# Leia os dados GeoJSON em um GeoDataFrame
gdf = gpd.read_file('caminho_para_o_seu_arquivo_geojson.geojson')
 
# Converta o GeoDataFrame em um DataFrame
df = pd.DataFrame(gdf)
 
# Crie um mapa com os dados do GeoJSON
st.map(df)

Neste exemplo, estamos usando a biblioteca geopandas para ler os dados GeoJSON em um GeoDataFrame. Em seguida, convertemos esse GeoDataFrame em um DataFrame regular do pandas, que podemos passar para a função st.map.

Aprimorando Mapas com Recursos do st.map

A função st.map do Streamlit possui uma variedade de recursos que permitem aprimorar seus mapas. Isso inclui adicionar marcadores personalizados, ajustar o nível de zoom e centralizar automaticamente o mapa nos pontos de dados.

Adicionando Marcadores Personalizados

Adicionar marcadores personalizados ao seu mapa pode ajudar a destacar pontos de dados específicos. Para adicionar marcadores personalizados, você precisa criar um DataFrame separado que contenha os valores de latitude e longitude dos pontos que deseja destacar.

# Crie um DataFrame com os pontos que deseja destacar
highlight = pd.DataFrame({
    'latitude': [37.7749],
    'longitude': [-122.4194]
})
 
# Adicione os pontos destacados ao mapa
st.map(data, highlight)

Neste exemplo, estamos destacando um único ponto no mapa. O DataFrame highlight contém os valores de latitude e longitude deste ponto. Em seguida, passamos este DataFrame para a função st.map juntamente com nossos dados originais.

Zoom e Centralização Automática

A função st.map centraliza automaticamente o mapa nos pontos de dados e ajusta o nível de zoom para exibir todos os pontos. No entanto, você também pode ajustar manualmente o nível de zoom e o centro do mapa.

# Crie um mapa com um nível de zoom e um centro especificados
st.map(data, zoom=10, center=[37.7749, -122.4194])

Neste exemplo, definimos o nível de zoom para 10 e centralizamos o mapa nas coordenadas [37.7749, -122.4194]. O parâmetro center recebe uma lista com dois valores: a latitude e a longitude do ponto que você deseja centralizar o mapa.

Resolvendo Problemas com o st.map

Embora o st.map seja uma ferramenta poderosa, você pode encontrar alguns problemas ao usá-lo. Um problema comum é o erro "st.map não está funcionando". Isso geralmente ocorre quando o DataFrame passado para o st.map não contém as colunas corretas ou as colunas não estão nomeadas corretamente. Lembre-se de que o st.map requer um DataFrame com as colunas nomeadas "lat" e "lon" ou "latitude" e "longitude".

Se encontrar esse problema, verifique seu DataFrame para garantir que ele tenha as colunas corretas e que elas estejam nomeadas adequadamente.

Criando Mapas Interativos no Streamlit

Mapas interativos são uma poderosa ferramenta para visualização de dados. Eles permitem aos usuários dar zoom, panar em diferentes regiões e até mesmo clicar em pontos de dados para obter mais informações. A função st.map do Streamlit facilita a criação desses mapas interativos.

Maneiras Fáceis de Incluir Mapas Interativos

Incluir um mapa interativo em seu aplicativo Streamlit é tão simples quanto passar um DataFrame com valores de latitude e longitude para a função st.map. No entanto, você também pode melhorar seus mapas adicionando interatividade, como marcadores personalizados, informações pop-up e muito mais.

Por exemplo, você pode adicionar um recurso pop-up que exibe mais informações sobre um ponto de dados quando ele é clicado. Isso pode ser feito adicionando uma coluna adicional ao seu DataFrame com as informações que você deseja exibir.

# Adicione uma coluna adicional para informações pop-up
data['info'] = ['São Francisco', 'Los Angeles', 'Nova York']
 
# Crie um mapa com os dados
st.map(data)

Neste exemplo, quando um ponto de dados é clicado, ele exibirá o nome da cidade.

Exibindo Mapas com Streamlit e Folium

Embora st.map seja uma ferramenta poderosa para criar mapas, você também pode usar outras bibliotecas como o Folium para criar mapas mais complexos. Folium é uma biblioteca Python que permite criar mapas interativos usando o Leaflet.js, uma popular biblioteca JavaScript de código aberto para mapas interativos compatíveis com dispositivos móveis.

Para exibir um mapa Folium no Streamlit, você pode usar a função st.pydeck_chart. Aqui está um exemplo:

import folium
 
# Crie um mapa Folium
m = folium.Map(location=[37.7749, -122.4194], zoom_start=10)
 
# Exiba o mapa no Streamlit
st.pydeck_chart(m)

Neste exemplo, estamos criando um mapa Folium centrado nas coordenadas [37.7749, -122.4194] com um nível de zoom de 10. Em seguida, exibimos este mapa no Streamlit usando a função st.pydeck_chart.

Isso é apenas a ponta do iceberg quando se trata de criar mapas interativos no Streamlit. Com o poder do Python e bibliotecas como Streamlit e Folium, as possibilidades são infinitas. Se você é um cientista de dados procurando visualizar seus dados ou um desenvolvedor construindo um aplicativo da web orientado por dados, mapas interativos são uma ferramenta poderosa para ter em seu arsenal.

Aprimorando sua Visualização de Dados com Streamlit

A função st.map do Streamlit é uma poderosa ferramenta para visualização de dados. Permitindo a criação de mapas interativos, ela fornece uma representação visual de seus dados que pode ser facilmente compreendida e interpretada. Esta seção explorará alguns recursos avançados do st.map e como você pode usá-los para aprimorar sua visualização de dados.

Recursos Avançados do st.map

Uma das principais características do st.map é sua capacidade de lidar com grandes conjuntos de dados. Ele pode plotar eficientemente milhares de pontos de dados em um mapa sem desacelerar seu aplicativo. Isso o torna uma ferramenta ideal para visualização de grandes conjuntos de dados.

Outro recurso avançado do st.map é sua compatibilidade com outras bibliotecas Python. É possível usar bibliotecas como pandas para manipulação de dados, numpy para cálculos numéricos e matplotlib para opções de visualização adicionais. Essa interoperabilidade torna o st.map uma ferramenta versátil para visualização de dados.

Exemplos de Visualização de Dados com st.map

Para ilustrar o poder do st.map, vamos analisar alguns exemplos de visualização de dados. Suponha que temos um conjunto de dados com anúncios do Airbnb na cidade de Nova York. Podemos usar o st.map para plotar esses anúncios em um mapa e obter informações sobre a distribuição dos anúncios do Airbnb na cidade.

# Carregue o conjunto de dados
data = pd.read_csv('nyc_airbnb_listings.csv')
 
# Crie um mapa com os dados
st.map(data)

Neste exemplo, cada ponto de dados no mapa representa um anúncio do Airbnb. Ao visualizar esses dados em um mapa, podemos ver facilmente quais áreas de Nova York têm mais anúncios do Airbnb.

Criação Fácil de Visualizações de Dados Interativas no Streamlit com PyGWalker

PyGWalker (opens in a new tab) também é outra ferramenta incrível que funciona como alternativa ao Streamlit AgGrid.

PyGWalker + Streamlit Online Demo (opens in a new tab)

PyGWalker (opens in a new tab) é uma biblioteca Python que ajuda você a incorporar facilmente uma interface semelhante ao Tableau em seu próprio aplicativo Streamlit sem esforço.

Confira este vídeo incrível produzido por Sven do Coding is Fun (opens in a new tab) demonstrando os passos detalhados para aprimorar seu aplicativo Streamlit com esta poderosa Biblioteca de Visualização de Dados Python!


Agradecimentos especiais a Sven e sua grande contribuição (opens in a new tab) à comunidade PyGWalker!

Além disso, você também pode conferir estes recursos:

Visualize Dados no Streamlit com PyGWalker (opens in a new tab)

Conclusão

A função st.map do Streamlit é uma poderosa ferramenta para criar mapas interativos e visualizar dados geoespaciais. Se você é um cientista de dados procurando visualizar seus dados ou um desenvolvedor construindo um aplicativo da web orientado por dados, st.map oferece uma maneira simples e eficiente de criar mapas interativos. Com seus recursos avançados e compatibilidade com outras bibliotecas Python, st.map é uma ferramenta versátil que pode aprimorar sua visualização e análise de dados.

Perguntas Frequentes

Como criar um mapa em Streamlit?

Criar um mapa em Streamlit é simples. Você precisa ter um DataFrame pandas que contenha valores de latitude e longitude. Em seguida, você pode passar esse DataFrame para a função st.map para criar um mapa.

Como criar um mapa de localização interativo?

Você pode criar um mapa de localização interativo em Streamlit usando a função st.map. Essa função cria um mapa e plota pontos de dados nele. O mapa é interativo, o que significa que você pode fazer zoom, mover e navegar por regiões diferentes. Você também pode adicionar marcadores personalizados e informações pop-up para melhorar a interatividade do mapa.

O Streamlit tem uma API?

Sim, o Streamlit tem uma API simples e intuitiva que permite criar aplicativos web interativos. A API fornece uma variedade de funções para criar diferentes tipos de visualizações, incluindo mapas, gráficos e tabelas. Você também pode usar a API para adicionar interatividade ao seu aplicativo, como botões, sliders e entrada de texto.