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)") | |