Hi,
I’m using the code of @Charly_Wargnier (A Streamlit app for navigating through inspirational quotes with "Next" and "Previous" buttons. · GitHub) to create previous and next buttons, the problem is when I press next button the graphs move to the top of the application, this is the aspect before of plotting:
After of first run:
And after of press next button:
Now the plot is in the top, before of sider bars.
With respect to the @Charly_Wargnier code, I’ve implement some modifications like:
Almacenar df_graph1 en el estado de la sesión
st.session_state.df_graph1 = df_graph1
Almacenar df_graph2 en el estado de la sesión
st.session_state.df_graph2 = df_graph2
st.session_state.tkstats = tkstats
Almacenar el contador en el estado de la sesión
st.session_state.count = 0
Mostrar la gráfica actual según el contador
display_current_graph(on)
def next_quote(on):
if st.session_state.count + 1 >= max(len(st.session_state.df_graph1), len(st.session_state.df_graph2)):
st.session_state.count = 0
else:
st.session_state.count += 1
display_current_graph(on)
def previous_quote(on):
if st.session_state.count > 0:
st.session_state.count -= 1
else:
st.session_state.count = max(len(st.session_state.df_graph1), len(st.session_state.df_graph2)) - 1
display_current_graph(on)
Mostrar la gráfica actual según el contador
def display_current_graph(on):
quote = st.session_state.df_graph1[st.session_state.count]
quote2 = st.session_state.df_graph2[st.session_state.count]
quote3 = st.session_state.tkstats[st.session_state.count]
plt.style.use('seaborn-darkgrid')
# Crear dos columnas para colocar las gráficas
col1, col2 = st.columns(2)
with col1:
plt.figure(figsize=(8, 6))
plt.plot(quote['time'], quote['Cplasma'],color='black')
plt.xlabel("Time, days")
plt.ylabel("Cplasma, uM")
plt.title(f"Plasma concentration vs. time for dose 1 mg/kg {st.session_state.names[st.session_state.count]}")
st.pyplot(plt)
with col2:
plt.figure(figsize=(8, 6))
plt.scatter(quote2['dose'], quote2['Css'],color='black')
plt.plot(quote2[quote2['dose'] == 1]['dose'], quote2[quote2['dose'] == 1]['Css'], linestyle='--') # Línea punteada
plt.plot(quote2['dose'], quote2['Css'], linestyle='--', color='black') # Línea sólida
plt.xlabel("Dose")
plt.ylabel("Css")
plt.title(f"CSS vs. daily dose of {st.session_state.names[st.session_state.count]}")
st.pyplot(plt)
any idea???