Hi, everybody!
I have a selectbox with two options: Home, Charts.
In my first option - the initial page - the user submit stocks names, start data and end data. Code is below:
menu = ['Home', 'Gráficos']
choice = st.sidebar.selectbox("Menu", menu)
carteira = pd.DataFrame()
ativos = []
def main():
if choice == 'Home':
with st.form(key='main_form'):
start = st.date_input('Data de início AAAA-MM-DD')
end = st.date_input('Data de fim AAAA-MM-DD')
for i in range(2):
ativos.append(st.text_input('Cód. do ativo + .SA: ', key=str(i)))
submit = st.form_submit_button(label='Enviar')
# Baixando os dados do Yahoo
if submit:
for ticker in ativos:
carteira[ticker] = web.get_data_yahoo(ticker, start=start, end=end)['Adj Close']
# TODO: Redirecionar esse st.write(carteira) pra outra tela do menu intitulada 'Gráficos'.
st.line_chart(carteira)
But I want that the option named ‘Charts’ plot data that user required, but I have no success.
Can anyone help me? Full code is below.
# Importando o framework
import streamlit as st
# Libs de coleta, processamento e manipulação de dados
import numpy as np
import pandas as pd
import yfinance as yf
yf.pdr_override()
import pandas_datareader.data as web
# Libs de visualização de gráficos
import matplotlib.pyplot as plts
# TODO: conhecer mais sobre esta biblioteca. Referências: https://docs.bokeh.org/en/latest/docs/reference/plotting.html,
# TODO: https://docs.streamlit.io/en/stable/api.html
#from bokeh.plotting import figure
# Título da página
st.title('Minerathon')
# Carregando um objeto DataFrame e a lista vazia de ativos
# TODO: isso deve estar interno a uma função?
menu = ['Home', 'Gráficos']
choice = st.sidebar.selectbox("Menu", menu)
carteira = pd.DataFrame()
ativos = []
def main():
if choice == 'Home':
with st.form(key='main_form'):
start = st.date_input('Data de início AAAA-MM-DD')
end = st.date_input('Data de fim AAAA-MM-DD')
for i in range(2):
ativos.append(st.text_input('Cód. do ativo + .SA: ', key=str(i)))
submit = st.form_submit_button(label='Enviar')
# Baixando os dados do Yahoo
if submit:
for ticker in ativos:
carteira[ticker] = web.get_data_yahoo(ticker, start=start, end=end)['Adj Close']
# TODO: Redirecionar esse st.write(carteira) pra outra tela do menu intitulada 'Gráficos'.
st.line_chart(carteira)
if choice == 'Gráficos':
st.line_chart(carteira)
if __name__ == '__main__':
main()
I appreciate any kind of help.