-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathvisualization.py
More file actions
74 lines (65 loc) · 2.09 KB
/
Copy pathvisualization.py
File metadata and controls
74 lines (65 loc) · 2.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# visualization.py
import plotly.graph_objects as go
import pandas as pd
import numpy as np
def plot_stock_data(df: pd.DataFrame, ticker: str) -> go.Figure:
"""
Cria um gráfico de preços de fechamento de uma ação.
Args:
df: DataFrame com colunas 'Date' e 'Close'
ticker: Código da ação (ex.: 'PETR4')
Returns:
go.Figure: Gráfico Plotly
"""
fig = go.Figure()
fig.add_trace(go.Scatter(
x=df['Date'],
y=df['Close'],
mode='lines',
name=f'{ticker} Close',
line=dict(color='blue') # Define a cor da linha
))
fig.update_layout(
title=f'Preço de Fechamento - {ticker}',
xaxis_title='Data',
yaxis_title='Preço (R$)',
template='plotly_dark', # Tema escuro para combinar com o Streamlit
hovermode='x unified' # Mostra informações ao passar o mouse
)
return fig
def plot_predictions(df: pd.DataFrame, predictions: np.ndarray, ticker: str) -> go.Figure:
"""
Cria um gráfico com preços históricos e previsões.
Args:
df: DataFrame com colunas 'Date' e 'Close'
predictions: Array com previsões para os próximos 5 dias
ticker: Código da ação (ex.: 'PETR4')
Returns:
go.Figure: Gráfico Plotly
"""
fig = go.Figure()
# Preços históricos
fig.add_trace(go.Scatter(
x=df['Date'],
y=df['Close'],
mode='lines',
name='Preço Real',
line=dict(color='blue')
))
# Previsões
forecast_dates = pd.date_range(start=df['Date'].iloc[-1], periods=len(predictions)+1, freq='B')[1:] # Dias úteis
fig.add_trace(go.Scatter(
x=forecast_dates,
y=predictions.flatten(),
mode='lines',
name='Previsão (5 dias)',
line=dict(color='orange', dash='dash') # Linha tracejada para previsões
))
fig.update_layout(
title=f'Previsão de Preços - {ticker}',
xaxis_title='Data',
yaxis_title='Preço (R$)',
template='plotly_dark',
hovermode='x unified'
)
return fig