Plotter
O módulo de gráficos trabalha em conjunto da biblioteca matplotlib automatizando seus processos para o desenvolvimento de gráficos otimizados para a análise de dados.
Classes de Configuração
Threshold
Define as linhas de referência.
- value (float): Valor do limite.
- color (str): Cor da linha/área.
- label (str): Texto da legenda.
- fill_above (bool): Preencher área acima da linha.
AxisConfig
Configurações visuais para os eixos Y.
- min_val / max_val (float): Limites do eixo.
- plot_type (str): 'line', 'scatter', 'bar', 'area'.
- label (str): Rótulo do eixo.
- thresholds (list[Threshold]): Lista de objetos Threshold.
Funções
plot_series(df, primary_conf, secondary_conf, title, x_lim)Gera a visualização gráfica combinando os DataFrames fornecidos com as configurações de eixos primário e secundário.
Exemplo de implementação
Primeiro, definimos os limiares (Thresholds) de atenção e alerta:
limite_atencao = Threshold( value=1.8, color='orange', label='ESTADO DE ATENÇÃO', fill_above=True, # Preenche a área acima da linha alpha=0.15 ) limite_alerta = Threshold( value=2.0, color='red', label='ESTADO DE ALERTA', fill_above=True )Em seguida, configuramos os eixos (AxisConfig) para os dados medidos (scatter) e previstos (linha):
# Configuração para Medição (Scatter plot / Pontos) conf_measurement = AxisConfig( plot_type='scatter', label="Nível do Mar (m)", columns=['Palmas'], min_val=-0.5, max_val=2.5, step=0.5, thresholds=[limite_atencao, limite_alerta], # Adiciona os limiares aqui plot_kwargs={ 'marker': '8', 's': 4, 'alpha': 1, 'color': 'black' } ) # Configuração para Previsão (Line plot / Linha) conf_forecast = AxisConfig( label="Nível do Mar (m)", columns=['Delft'], min_val=-0.5, max_val=2.5, step=0.5, plot_kwargs={ 'alpha': 1, 'linewidth': 1.5, 'color': 'green' } )Por fim, chamamos a função de plotagem passando os DataFrames e as configurações:
plot_series( df=[df_measurements, df_forecasts], primary_conf=conf_measurement, secondary_conf=conf_forecast, title="Monitoramento de Ressaca - Comparação", x_lim=True # Ajusta o eixo X para cobrir todos os dados ) plt.show()

