7 Capítulo – Estudos de Caso: Análise de Dados Meteorológicos
7.1 Introdução
Neste capítulo, apresentaremos estudos de caso utilizando dados climáticos e meterológico.
Cada estudo de caso abordará uma situação prática comum em análises climáticas.
7.2 Estudo de caso 01: Temperatura média mensal a partir de dados de uma estação meteorológica
As condições climatológicas influenciam desde a safra de grãos até a decisão de um vendedor ambulante levar seu carrinho para a praia ou não, sendo importante e influente na economia do país. Portanto aprender a coletar e elaborar análises de dados sobre o clima usando o Python (ou outra linguagem de programação) é fundamental para o profissional meteorologista.
Condições como a temperatura, umidade, radiação e pressão atmosgérica podem influenciar diversos aspectos do nosso cotidiano, portanto, o monitoramento do clima pode ajudar a tomar melhores decisões.
No Brasil, uma das principais fontes de dados públicas sobre condições climática é o Instituto Nacional de Meterologia (INMET), que disponibiliza dados históricos com relativa atualização sobre:
Precipitação
Pressão atmosférica
Radiação
Temperatura
Umidade
Vento
Os dados são disponibilizados para nível de:
Regiões
Estados
Municípios
Em uma granularidade de:
Data
Hora
Dessa forma, vamos práticar!
No primeiro estudo de caso vamos calcular e visualizar a temperatura média mensal para uma estação meteorológica do INMET.
Para isso você deve baixar dados de uma estação no site do INMET
Em seguida crie um novo notebook (código/script) no google colab (.ipynb) e comece os trabalhos.
Para o exemplo do estudo de caso será utilizado dados da estação automática A203 localizada no município de São Luís-MA para o ano de 2024.
7.3 Criando notebook/script/código
Acesse um navegador de internet (microsoft edge, google chrome, Opera, etc.).
Faça o login na sua conta gmail, então acesse Google Colab.
Então crie um novo notebook:

Renomei o arquivo, conecte o ambiente de trabalho e comece a construir o seu código com células de texto (explicando cada etapa) e célular de código (executando o acesso, manipulação e análise dos dados):

7.4 Instalando bibliotecas
#INSTALANDO BIBLIOTECAS
!pip install seaborn -q7.5 Importando bibliotecas
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns7.6 Carregando dados da estação (arquivo csv)
#CARREGANDO E VISUALIZANDO TABELA DE DADOS
# dados = pd.read_csv('/content/INMET_NE_MA_A203_SAO_LUIS_2024.csv', sep=';', skiprows= 8, decimal=',', encoding='latin1')
dados = "https://raw.githubusercontent.com/IzadoraSC/Disc_Computacao_II/main/Dados/INMET_NE_MA_A203_SAO%20LUIS_01-01-2024_A_31-12-2024.CSV"
dados = pd.read_csv(dados, sep = ';', skiprows = 8, decimal = ',', encoding = 'latin1')
#visualizando as primeiras linhas da tabela
dados.head()7.7 Manipulações iniciais dos dados
#VERIFICANDO TIPO DE DADOS EM CADA COLUNA
print(dados.dtypes)#VERIFICANDO NOMES DE COLUNAS
print(dados.columns)#RENOMEANDO COLUNAS
dados = dados.rename(columns={
'PRECIPITAÇÃO TOTAL, HORÁRIO (mm)': 'Chuva',
'TEMPERATURA DO AR - BULBO SECO, HORARIA (°C)': 'Temperatura'})
#DELETANDO COLUNA
dados = dados.drop(columns=['Unnamed: 19'])
dados.columns#MUDAR TIPO DE DADO DA COLUNA 'Data'
dados['Data'] = pd.to_datetime(dados['Data'], errors='coerce')
dados.dtypes# SELECIONAR APENAS AS COLUNAS DESEJADAS
dados_2 = dados[['Data', 'Chuva', 'Temperatura']]
dados_2.head()# CRIANDO NOVAS COLUNAS ('Mes' e 'Dia') com as funções .dt.month e .dt.day
dados_2['Mes'] = dados_2['Data'].dt.month
dados_2['Dia'] = dados_2['Data'].dt.day
dados_2.head()7.8 Agrupar por mês e calcular média da temperatura máxima
Nesta etapa serão utilizadas as funções .groupby para agrupar os dados por mês; .mean() para gerar a média.
# AGRUPAR DADOS POR MÊS E CALCULAR MÉDIA MENSAL DA TEMPERATURA
media_mensal = dados_2.groupby("Mes")['Temperatura'].mean()
media_mensal.head()7.9 Gerando Gráfico
| Elemento | Descrição |
sns.lineplot() |
Cria o gráfico de linha |
marker='o' |
Adiciona marcadores nos pontos |
linewidth e color |
Controlam espessura e cor da linha |
plt.xticks() |
Substitui os números dos meses por nomes abreviados |
plt.figtext() |
Adiciona uma fonte abaixo do gráfico |
# GRÁFICO DE TEMPERATURA MÉDIA MENSAL
plt.figure(figsize=(10, 6))
sns.lineplot(data=media_mensal, x='Mes', y='Temperatura', marker='o', linewidth=2.5, color='green')
# PERSONALIZAÇÃO
plt.title("Temperatura Média Mensal - São Luís-MA 2024", fontsize=16)
plt.xlabel("Mês", fontsize=12)
plt.ylabel("Temperatura (°C)", fontsize=12)
plt.grid(True, linestyle='--', alpha=0.5)
# AJUSTAR OS RÓTULOS DOS MESES COM AS ABREVIAÇÕES DOS NOMES DOS MESES
plt.xticks(media_mensal["Mes"], ["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"])
# FONTE DOS DADOS
plt.figtext(0.5, -0.05, "Fonte: Estação Meteorológica A203 / INMET",
ha="center", fontsize=10, style='italic')
# EXIBIR GRÁFICO
plt.tight_layout()
# SALVAR GRÁFICO
plt.savefig("grafico_temperatura.png", dpi=300, bbox_inches='tight')
plt.show()Resultado:

Para mais configurações sobre a geração e possibilidades de alterações no gráfico acessar a documentação das bibliotecas Matplotlib e Seaborn
7.9.1 Gráfico alternativo
# AGRUPANDO POR MÊS PARA OBTER TEMPERATURA MÍNIMA, MÉDIA E MÁXIMA
temp_mensal = dados_2.groupby("Mes")["Temperatura"].agg(
Tmin="min",
Tmed="mean",
Tmax="max"
).reset_index()
print(temp_mensal.head())# NOMES DOS MESES
meses = ["Jan", "Fev", "Mar", "Abr", "Mai", "Jun",
"Jul", "Ago", "Set", "Out", "Nov", "Dez"]
# GRÁFICO DE TEMPERATURAS (MED, MIN E MAX) MENSAL
plt.figure(figsize=(10, 6))
plt.plot(meses, temperatura_mensal["Tmin"], marker='o', color='blue', label='Temp. Mínima')
plt.plot(meses, temperatura_mensal["Tmed"], marker='o', color='green', label='Temp. Média')
plt.plot(meses, temperatura_mensal["Tmax"], marker='o', color='red', label='Temp. Máxima')
# PERSONALIZAÇÃO
plt.title("Temperaturas Mensais - São Luís/MA (2024)", fontsize=14)
plt.xlabel("Mês")
plt.ylabel("Temperatura (°C)")
plt.grid(True, linestyle="--", alpha=0.5)
plt.legend()
# FONTE DOS DADOS
plt.figtext(0.5, -0.05, "Fonte: Estação Meteorológica A203 / INMET",
ha="center", fontsize=9, style='italic')
# EXIBIR GRÁFICO
plt.tight_layout()
# SALVAR GRÁFICO
plt.savefig("grafico_temperatura_2.png", dpi=300, bbox_inches='tight')
plt.show()
8 Estudo de caso 02: Precipitação Acumulada Mensal
Para gerar o gráfico de precipitação acumulada deve-se repetir as etapas iniciais até a etapa de manipulação dos dados e geração da tabela dados_2.
8.1 Agrupar por mês
# AGRUPAR POR MÊS E SOMAR A PRECIPITAÇÃO
chuva_mensal = dados_2.groupby("Mes")["Chuva"].sum().reset_index()
chuva_mensal.head()8.2 Gerando Gráfico
# GRÁFICO DE PRECIPITAÇÃO ACUMULADA MENSAL
plt.figure(figsize=(10, 6))
sns.barplot(data=chuva_mensal, x="Mes", y="Chuva", color="darkblue")
# PERSONALIZAÇÃO
plt.title("Precipitação Acumulada Mensal - São Luís/MA (2024)", fontsize=16)
plt.xlabel("Mês", fontsize=12)
plt.ylabel("Precipitação (mm)", fontsize=12)
plt.grid(axis="y", linestyle="--", alpha=0.5)
# AJUSTAR OS RÓTULOS DOS MESES COM AS ABREVIAÇÕES DOS NOMES DOS MESES
plt.xticks(chuva_mensal["Mes"] -1, ["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"])
# FONTE DOS DADOS
plt.figtext(0.5, -0.05, "Fonte: Estação Meteorológica A203 / INMET",
ha="center", fontsize=9, style='italic')
# EXIBIR GRÁFICO
plt.tight_layout()
# SALVAR GRÁFICO
plt.savefig("precipitacao_mensal.png", dpi=300, bbox_inches="tight")
plt.show()
9 Estudo de caso 03: Climograma
Neste estudo de caso vamos utilizar as tabelas dados_2 (Estudo de Caso 01) e chuva_mensal (Estudo de Caso 02) para gerar o climograma, portante, realize as etapas para geração dessas tabelas.
# GRÁFICO CLIMOGRAMA
fig, ax1 = plt.subplots(figsize=(12, 6))
# BARRAS: PRECIPITAÇÃO
sns.barplot(data=chuva_mensal, x="Mes", y="Chuva", color="darkblue")
plt.xlabel("Mês", fontsize=12)
plt.ylabel("Precipitação (mm)", fontsize=12)
plt.grid(axis="y", linestyle="--", alpha=0.5)
# LINHA: TEMPERATURA (EIXO SECUNDÁRIO)
ax2 = ax1.twinx()
sns.lineplot(data=media_mensal, x="Mes", y="Temperatura",
marker='o', color="red", linewidth=2.5, ax=ax2)
ax2.set_ylabel("Temperatura Média do Ar (°C)", fontsize=12)
ax2.tick_params(axis='y')
# AJUSTAR OS RÓTULOS DOS MESES COM AS ABREVIAÇÕES DOS NOMES DOS MESES
plt.xticks(chuva_mensal["Mes"] -1, ["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"])
# TÍTULO
plt.title("Climograma - São Luís/MA (2024)", fontsize=16)
# FONTE DOS DADOS
plt.figtext(0.5, -0.05, "Fonte: Estação Meteorológica A203 / INMET",
ha="center", fontsize=10, style='italic')
# EXIBIR GRÁFICO
plt.tight_layout()
# SALVAR GRÁFICO
plt.savefig("climograma_slz_2024.png", dpi=300, bbox_inches="tight")
plt.show()
10 Estudo de caso 04: Precipitação Mensal e Anual
Neste estudo de caso, será realizada a análise da precipitação acumulada mensal e anual a partir de dados históricos de chuva registrados em uma estação pluviométrica disponíveis para download no Sistema Nacional de Informações sobre Recursos Hidrícos da ANA (Agência Nacional de Águas e Saneamento Básico).

Para isso você deve baixar dados de uma estação no site do Portal HIDROWEB:

Em seguida crie um novo notebook (código/script) no google colab (.ipynb) e comece os trabalhos.

Para o exemplo do estudo de caso será utilizado dados da estação pluviométrica 447002 localizada no município de Imperatriz-MA.
10.1 Importando bibliotecas
# CARREGANDO BIBLIOTECAS
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns10.2 Carregando dados da estação (arquivo .csv)
Observação: antes de carregar (colocar no driver/colab) o arquivo .csv da estação, abra o arquivo em um bloco de notas e apague as primeiras linhas de metadados (informações), deixando apenas a partir do nome das colunas.
#CARREGANDO E VISUALIZANDO TABELA DE DADOS
dados = pd.read_csv('/content/447002_Chuvas_v2.csv', sep=';', decimal=',', encoding='latin1',
usecols=['Data', 'Total'])
# para rodar o exemplo pode carregar o arquivo disponível no github
# dados = "https://raw.githubusercontent.com/IzadoraSC/ebook-intro-computacao-meteorologia/refs/heads/main/dados/casos/447002_Chuvas_v2.csv"
# dados = pd.read_csv(dados, sep=';', decimal=',', encoding='latin1',
# usecols=['Data', 'Total'])# VISUALIZANDO AS PRIMEIRAS LINHAS DA TABELA
dados.head()10.3 Manipulações iniciais dos dados
# VERIFICANDO DIMENSÕES DA TABELA
dados.shape# VERIFICANDO DADOS AUSENTES
dados.isnull().sum()#RENOMEANDO COLUNAS
dados = dados.rename(columns={
'Total': 'Chuva'})
dados.columns#VERIFICANDO TIPO DE DADOS EM CADA COLUNA
print(dados.dtypes)OBS: a data está na ordem dia/mês/ano, o padrão que a linguagem entende é ano/mês/dia (yy/mm/dd), portanto ao converter para a data para o tipo ‘datetime’ deve-se informar o parâmetro dayfirst=True
#MUDAR TIPO DE DADO DA COLUNA 'Data'
dados['Data'] = pd.to_datetime(dados['Data'], errors='coerce', dayfirst=True)
dados.dtypes# CRIANDO NOVAS COLUNAS ('Mes' e 'Dia') com as funções .dt.month e .dt.day
dados['Mes'] = dados['Data'].dt.month
dados['Ano'] = dados['Data'].dt.year
dados.head()10.4 Gerando Gráficos - Precipitação Mensal
# GRÁFICO DE PRECIPITAÇÃO MENSAL (1984-2025)
plt.figure(figsize=(10, 6))
sns.barplot(data=dados, x="Mes", y="Chuva", color="royalblue")
# PERSONALIZAÇÃO
plt.title("Precipitação Mensal - Imperatriz-MA (1984-2025)", fontsize=16,
fontweight="bold")
plt.xlabel("Mês", fontsize=12)
plt.ylabel("Precipitação (mm)", fontsize=12)
plt.grid(axis="y", linestyle="--", alpha=0.6)
# FONTE DOS DADOS
plt.figtext(0.5, -0.05, "Fonte: Estação 447002 / SNIRH-ANA", ha="center",
fontsize=10, style='italic')
# AJUSTAR OS RÓTULOS DOS MESES COM AS ABREVIAÇÕES DOS NOMES DOS MESES
plt.xticks(ticks=range(0,12), labels=["Jan", "Fev", "Mar", "Abr", "Mai", "Jun",
"Jul", "Ago", "Set", "Out", "Nov", "Dez"])
# EXIBIR GRÁFICO E SALVAR GRÁFICO
plt.tight_layout()
plt.savefig("chuva_mensal.png", dpi=300, bbox_inches="tight")
plt.show()
# SELECIONAR DADOS DE UM ÚNICO ANO
dados_2025 = dados[dados['Ano'] == 2025]
dados_2025.head(12)# GRÁFICO DE PRECIPITAÇÃO MENSAL (2025)
plt.figure(figsize=(10, 6))
sns.barplot(data=dados_2025, x="Mes", y="Chuva", color="royalblue")
# PERSONALIZAÇÃO
plt.title("Precipitação Mensal - Imperatriz-MA (2025)", fontsize=16,
fontweight="bold")
plt.xlabel("Mês", fontsize=12, fontweight="bold")
plt.ylabel("Precipitação (mm)", fontsize=12, fontweight="bold")
plt.ylim(0, 450)
plt.tick_params(axis='y', labelsize=12)
plt.tick_params(axis='x', labelsize=12)
plt.grid(axis="y", linestyle="--", alpha=0.6)
# FONTE DOS DADOS
plt.figtext(0.5, -0.05, "Fonte: Estação 447002 / SNIRH-ANA", ha="center",
fontsize=10, style='italic')
# AJUSTAR OS RÓTULOS DOS MESES COM AS ABREVIAÇÕES DOS NOMES DOS MESES
plt.xticks(ticks=range(0,5), labels=["Jan", "Fev", "Mar", "Abr", "Mai"])
# EXIBIR GRÁFICO E SALVAR GRÁFICO
plt.tight_layout()
plt.savefig("chuva_mensal_2025.png", dpi=300, bbox_inches="tight")
plt.show()
10.5 Gerando Gráficos - Precipitação Anual
# AGRUPAR PRECIPITAÇÃO POR ANO
dados_ano = dados.groupby('Ano')['Chuva'].sum().reset_index()
dados_ano.head()# VERIFICAR ESTATÍSTICA
dados_ano.describe()# GRÁFICO DE PRECIPITAÇÃO ANUAL (1984-2025)
plt.figure(figsize=(10, 6))
sns.barplot(data=dados_ano, x="Ano", y="Chuva", color="steelblue")
# PERSONALIZAÇÃO
plt.title("Precipitação Acumulada Anual (mm) - Imperatriz-MA (1984-2025)", fontsize=16,
fontweight="bold")
plt.xlabel("Ano", fontsize=12, fontweight="bold")
plt.ylabel("Precipitação (mm)", fontsize=12, fontweight="bold")
plt.grid(axis="y", linestyle="--", alpha=0.6)
plt.tick_params(axis='y', labelsize=12)
plt.tick_params(axis='x', labelsize=12)
plt.xticks(rotation=90)
# FONTE DOS DADOS
plt.figtext(0.5, -0.05, "Fonte: Estação 447002 / SNIRH", ha="center",
fontsize=10, style='italic')
# EXIBIR GRÁFICO E SALVAR GRÁFICO
plt.tight_layout()
plt.savefig("precipit_anual.png", dpi=300, bbox_inches="tight")
plt.show()
# CALCULANDO MÉDIA HISTÓRICA
media_historica_chuva = dados_ano['Chuva'].mean()
media_historica_chuva# GRÁFICO DE PRECIPITAÇÃO ANUAL (1984-2025) COM LINHA DE MÉDIA HISTÓRICA
plt.figure(figsize=(10, 6))
sns.barplot(data=dados_ano, x="Ano", y="Chuva", color="steelblue")
# PERSONALIZAÇÃO
plt.xlabel("Ano", fontsize=12, fontweight="bold")
plt.ylabel("Precipitação Acumulada Anual (mm)", fontsize=12, fontweight="bold")
plt.grid(axis="y", linestyle="--", alpha=0.6)
plt.tick_params(axis='y', labelsize=12)
plt.tick_params(axis='x', labelsize=12)
plt.xticks(rotation=90)
# ADICIONANDO LINHA DE MÉDIA HISTÓRICA
plt.axhline(media_historica_chuva, color='red', linestyle='--',
label=f'Média Histórica ({media_historica_chuva:.2f} mm)')
plt.legend()
# FONTE DOS DADOS
plt.figtext(0.5, -0.05, "Fonte: Estação 447002 / SNIRH", ha="center",
fontsize=10, style='italic')
# EXIBIR GRÁFICO E SALVAR GRÁFICO
plt.tight_layout()
plt.savefig("precipit_anual_2.png", dpi=300, bbox_inches="tight")
plt.show()
11 Estudo de caso 05: Umidade Relativa (%)
Este estudo de caso será baseado em dados do repositório do Copernicus Climate Data Store (CDS), especificamente do produto: “Agrometeorological indicators from 1979 to present derived from reanalysis”.
Esse produto fornece indicadores úteis para a agricultura, como temperatura, evapotranspiração, e umidade relativa do ar, com cobertura global e dados disponíveis em resoluções mensais. Acesse o site CDS, faça o seu login e baixa o dado de umidade relativa do ar.







11.1 Usando bibliotecas “earthkit” e “cartopy”
Documentação “earthkit”: https://earthkit.ecmwf.int/
Documentação “cartopy”: https://cartopy.readthedocs.io/stable/
11.2 Instalando bibliotecas
# INSTALANDO BIBLIOTECAS
!pip install cffi -q
!pip install earthkit -q
!pip install cartopy -q11.3 Importando bibliotecas
#CARREGANDO BIBLIOTECAS
import earthkit
import xarray as xr
import cartopy.crs as ccrs
import matplotlib.pyplot as plt
import cartopy.feature as cfeature11.4 Carregando dado
# CARREGAR O ARQUIVO .NC (netCDF)
dado = earthkit.data.from_source(
"file",
"/content/Relative-Humidity-2m-12h_C3S-glob-agric_AgERA5_20230101_final-v1.1.nc")# Conversão para estrutura xarray
xr_dado = dado.to_xarray()
xr_dado# VISUALIZAR VARIÁVEL DISPONÍVEL
xr_dado.data_vars# SELECIONANDO A VARIÁVEL
umid = xr_dado["Relative_Humidity_2m_12h"]
# VISUALIZAÇÃO EXPLORATÓRIA DO DADO
umid.plot()11.5 Gerando Mapa
# GERANDO VISUALIZAÇÃO COM EARTHKIT
# Define um estilo personalizado para o gráfico
# - 'colors' define a paleta de cores (cividis invertida)
# - 'levels' define os intervalos (de 0 a 100%, de 5 em 5)
style = earthkit.plots.styles.Style(
colors="cividis_r",
levels=range(0, 101, 5),
)
# Cria um mapa com projeção de Robinson (ideal para visualizações globais)
chart = earthkit.plots.Map(crs=ccrs.Robinson())
# Plota os dados rapidamente usando a função 'quickplot'
# Aplica o estilo definido anteriormente
chart.quickplot(umid, style=style)
# Adiciona uma imagem de fundo padrão (ex. oceano e continente sombreado)
chart.stock_img()
# Adiciona contornos dos continentes e das linhas costeiras
# Usa resolução média para melhor qualidade
chart.coastlines(resolution="medium")
# Insere linhas de grade (latitude e longitude)
chart.gridlines()
# Define o título do gráfico automaticamente com nome longo e data formatada
chart.title("Umidade Relativa do Ar (%) {time:%Y-%m-%d}")
# Adiciona legenda com rótulo
chart.legend(label="Umidade Relativa do Ar (%)")
# Exibe o gráfico na tela
chart.show()
11.6 Outra forma de carregar o arquivo
# CARREGAR O ARQUIVO .NC (netCDF)
ds = xr.open_dataset("/content/Relative-Humidity-2m-12h_C3S-glob-agric_AgERA5_20230101_final-v1.1.nc")
ds# Ver variáveis no arquivo
print(ds.data_vars)
# Ver coordenadas (lat, lon, time)
print(ds.coords)# SELECIONANDO A VARIÁVEL
umidade = ds["Relative_Humidity_2m_12h"]# GERANDO VISUALIZAÇÃO COM CARTOPY
# CRIAR FIGURA E EIXO COM PROJEÇÃO GEOGRÁFICA
fig = plt.figure(figsize=(12, 6))
ax = plt.axes(projection=ccrs.PlateCarree()) # Pode usar outras projeções, Ex.: Robinson, Mercator
# PLOTAR DADO
plot = umidade.plot(
ax=ax,
transform=ccrs.PlateCarree(), # Sistema de coordenadas dos dados
cmap="cividis_r",
levels=21,
cbar_kwargs={'label': 'Umidade Relativa do Ar (%)'}
)
# ADICIONAR ELEMENTOS AO MAPA
ax.coastlines(resolution='110m')
ax.add_feature(cfeature.BORDERS, linestyle=':')
ax.add_feature(cfeature.LAND, facecolor='lightgray', alpha=0.5)
ax.gridlines(draw_labels=True)
# ADICIONAR TÍTULO
plt.title("Umidade Relativa do Ar (%) - 01/01/2023",
fontsize=14)
# SALVAR FIGURA DO MAPA COMO ARQUIVO .PNG
plt.savefig("mapa_umidade.png", dpi=300)
# EXIBIR O MAPA
plt.show()
# GERANDO MAPA APENAS NA REGIÃO DO BRASIL
# Aqui, é selecionado a faixa de latitude entre 5°N e 35°S e longitude entre 85°W e 25°W,
# que delimita aproximadamente a região que compreende o Brasil.
umid_br = umidade.sel(lat=slice(5, -35), lon=slice(-85, -25))
# CRIAR A FIGURA E OS EIXOS COM PROJEÇÃO GEOGRÁFICA
fig = plt.figure(figsize=(10, 6))
ax = plt.axes(projection=ccrs.PlateCarree())
# PLOTAR OS DADOS DE UMIDADE PARA O BRASIL
umid_br.plot(
ax=ax,
transform=ccrs.PlateCarree(),
cmap="cividis_r",
levels=21,
cbar_kwargs={'label': 'Umidade Relativa do Ar (%)'}
)
# ADICIONAR DETALHES GEOGRÁFICOS
ax.coastlines()
ax.add_feature(cfeature.BORDERS, linestyle=':')
ax.gridlines(draw_labels=True)
# SALVAR FIGURA DO MAPA COMO ARQUIVO .PNG
plt.savefig("mapa_umidade_br.png", dpi=300)
# ADICIONAR TÍTULO
plt.title("Umidade Relativa do Ar (%) - Brasil")
# EXIBIR O MAPA
plt.show()