An interactive Streamlit web app that uses PlotSense AI to recommend and explain visualizations for climate data.
This project was built as part of the PlotSense AI Hackathon to demonstrate how storytelling with data can be made simple and extensible.
-
Load a real climate dataset (climate.csv) with Temperature, Humidity, Wind Speed, Rainfall.
-
Filter data by City and choose a variable of interest.
-
Get AI-powered recommendations for visualizations using PlotSense.
-
Preview raw data (first 10 rows) before visualization.
-
Render visualizations directly inside the web app.
-
Generate AI explanations for each chart using your Groq API key.
plotsense-data-storytelling/
βββ app.py # Main Streamlit app
βββ data/
β βββ climate.csv # Sample climate dataset
βββ requirements.txt # Python dependencies
βββ README.md # Project documentation
βββ assets/ # Store screenshots for README- Clone this repository
git clone https://github.com/Havilah-Blockchain-Studios/PlotSenseAI-Hackathon-Demo-Projects.git
cd project_three- Create a virtual environment (recommended)
python -m venv .venv
source .venv/bin/activate # macOS/Linux
.venv\Scripts\activate # Windows- Install dependencies
pip install plotsense
pip install streamlit
pip install -r requirements.txtThis installs:
- plotsense (AI visualization tool)
- streamlit (for the web app)
- pandas (for data handling)
From the project root, run:
python -m streamlit run app.pyThen open the local server URL shown in your terminal (usually http://localhost:8501 ).
Some features (AI explanations) require a Groq API key:
-
Create a free account at Groq Console.
-
Copy your key (looks like gsk_xxxxx).
-
Paste it into the sidebar input box inside the Streamlit app.
- The input is hidden (password-style).
- Each participant can use their own key without editing code.
Recommendations + Visualization
AI Explanation
This project is hackathon-extensible:
- Replace climate.csv with your own dataset (data/yourdata.csv).
- Add more variables or filters in app.py.
- Customize the layout in Streamlit for different storytelling themes.