Spaces:
Sleeping
Sleeping
import streamlit as st | |
import pandas as pd | |
import matplotlib.pyplot as plt | |
import datetime as dt | |
# Initialize session state for storing mood logs | |
if "mood_data" not in st.session_state: | |
st.session_state.mood_data = pd.DataFrame(columns=["Date", "Mood", "Activity", "Notes"]) | |
# App title and description | |
st.title("Mood Tracker") | |
st.write("A simple app to log and track your mood over time.") | |
# Sidebar for mood input | |
st.sidebar.header("Log Your Mood") | |
mood = st.sidebar.selectbox("How are you feeling today?", ["Happy", "Neutral", "Sad", "Anxious", "Excited", "Angry"]) | |
activity = st.sidebar.text_input("What activity were you doing?") | |
notes = st.sidebar.text_area("Add any notes (optional):") | |
log_button = st.sidebar.button("Log Mood") | |
# Log the mood | |
if log_button: | |
new_entry = pd.DataFrame({ | |
"Date": [dt.datetime.now()], | |
"Mood": [mood], | |
"Activity": [activity], | |
"Notes": [notes] | |
}) | |
st.session_state.mood_data = pd.concat([st.session_state.mood_data, new_entry], ignore_index=True) | |
st.success("Mood logged successfully!") | |
# Display mood data | |
st.header("Mood History") | |
if not st.session_state.mood_data.empty: | |
st.dataframe(st.session_state.mood_data.sort_values(by="Date", ascending=False)) | |
else: | |
st.write("No mood data logged yet. Use the sidebar to add entries.") | |
# Visualize mood trends | |
st.header("Mood Trends") | |
if not st.session_state.mood_data.empty: | |
# Convert date column to datetime for grouping | |
st.session_state.mood_data["Date"] = pd.to_datetime(st.session_state.mood_data["Date"]) | |
mood_counts = st.session_state.mood_data.groupby(["Mood"]).size() | |
# Bar chart for mood distribution | |
fig, ax = plt.subplots() | |
mood_counts.plot(kind="bar", color="skyblue", ax=ax) | |
ax.set_title("Mood Distribution") | |
ax.set_ylabel("Count") | |
ax.set_xlabel("Mood") | |
st.pyplot(fig) | |
# Trend over time | |
mood_over_time = st.session_state.mood_data.groupby(st.session_state.mood_data["Date"].dt.date).size() | |
fig, ax = plt.subplots() | |
mood_over_time.plot(ax=ax, marker="o", color="orange") | |
ax.set_title("Mood Over Time") | |
ax.set_ylabel("Entries") | |
ax.set_xlabel("Date") | |
st.pyplot(fig) | |
else: | |
st.write("No data available for visualizations.") | |
# Resources for mental health | |
st.header("Mental Health Resources") | |
st.write("Here are some tips and resources to help improve your mental health:") | |
st.markdown("- Practice mindfulness and deep breathing.") | |
st.markdown("- Stay physically active.") | |
st.markdown("- Talk to a trusted friend or counselor.") | |
st.markdown("- [Find a therapist](https://www.psychologytoday.com)") | |