A comprehensive data visualization platform for analyzing sentiment patterns across multiple dimensions using interactive dashboards built with Streamlit and Plotly.
-
π GeoSentiment Map Explorer
- Interactive global sentiment mapping
- Time-series analysis with sliders
- Location-based sentiment patterns
- Country and city-level insights
-
π― Topic & Hashtag Sentiment Radar
- Radar charts for hashtag sentiment comparison
- Word clouds by sentiment categories
- Hashtag trend analysis over time
- Topic performance metrics
-
β° Temporal Emotion Evolution Dashboard
- Weekday vs Hour sentiment heatmaps
- Circular 24-hour emotion wheels
- Daily sentiment evolution charts
- Emotion distribution over time
-
π Influencer Impact Visualizer
- Bubble charts: followers vs sentiment vs engagement
- Network graphs showing influence relationships
- User clustering analysis (K-means)
- Influencer performance rankings
-
π± Device & Language Bias Dashboard
- Sankey diagrams: Language β Sentiment β Device flow
- Statistical bias detection
- Cross-platform sentiment analysis
- Language sentiment profiling
- Interactive Visualizations: 15+ chart types including radar, Sankey, network graphs, heatmaps
- Real-time Filtering: Date ranges, devices, languages, user types
- Statistical Analysis: Bias detection, correlation matrices, clustering
- Rich Dataset: 10,000+ synthetic social media records
- Export Capabilities: Download filtered data as CSV
- Responsive Design: Works on desktop and mobile
Python 3.7+# Clone the repository
cd sentiment-dashboard
# Create virtual environment
python3 -m venv venv
source venv/bin/activate # On Windows: venv\\Scripts\\activate
# Install dependencies
pip install -r requirements.txt
# Generate sample data
python utils/data_generator.pystreamlit run app.pyThe application will open in your browser at http://localhost:8501
sentiment-dashboard/
βββ app.py # Main Streamlit application
βββ requirements.txt # Python dependencies
βββ README.md # This file
βββ data/
β βββ sentiment_data.csv # Generated dataset
βββ dashboards/
β βββ __init__.py
β βββ geo_sentiment_map.py # Geographic analysis
β βββ hashtag_sentiment_radar.py # Topic & hashtag analysis
β βββ temporal_emotion_dashboard.py # Time-based analysis
β βββ influencer_impact_dashboard.py # Influence network analysis
β βββ device_language_bias_dashboard.py # Platform bias analysis
βββ utils/
βββ data_generator.py # Synthetic data generation
The synthetic dataset includes:
- Temporal: Timestamps, weekdays, hours
- Geographic: Cities, countries, coordinates (12 locations)
- Linguistic: 10 languages with realistic distributions
- Technical: 5 device types (iPhone, Android, Web, etc.)
- Social: Follower counts, verification status, engagement metrics
- Content: Hashtags, sentiment scores, emotion labels
- Frontend: Streamlit (Interactive web interface)
- Visualization: Plotly (Interactive charts)
- Data Processing: Pandas, NumPy
- Machine Learning: Scikit-learn (Clustering)
- Network Analysis: NetworkX
- Text Processing: WordCloud, TextBlob
- Statistical Analysis: Custom bias detection algorithms
- Geographic: Scatter maps, choropleth maps
- Network: Force-directed graphs, node-link diagrams
- Temporal: Heatmaps, time series, circular plots
- Statistical: Radar charts, correlation matrices, bubble charts
- Flow: Sankey diagrams
- Text: Word clouds
- Clustering: 3D scatter plots
- Social Media Analytics: Understand sentiment patterns across platforms
- Brand Monitoring: Track sentiment by geography and demographics
- Content Strategy: Optimize posting times and hashtag usage
- Bias Detection: Identify platform or language-specific sentiment biases
- Influence Analysis: Understand how different user types affect sentiment
- Academic Research: Study sentiment patterns in social data
- Create a new Python file in
dashboards/ - Implement a
main()function - Add import to
app.py - Add navigation option
- Edit
utils/data_generator.pyto change dataset characteristics - Update CSV file path in dashboard modules
- Adjust date ranges and filters as needed
- Handles 10,000+ records smoothly
- Interactive filtering without page reloads
- Optimized aggregations and memory usage
- Responsive design for various screen sizes
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is open source and available under the MIT License.
- Streamlit - For the amazing web app framework
- Plotly - For interactive visualizations
- OpenStreetMap - For map data
- Community - For inspiration and feedback
For questions, suggestions, or collaboration:
- Create an issue on GitHub
- Contribute to the discussion
Built with β€οΈ for data visualization enthusiasts