PlotlyVizPro is a modular, multi-notebook visualization project crafted to help you master interactive plotting using Plotly, Streamlit, and Python utilities. From chart fundamentals to advanced dashboards, this project equips you with:
โ
A reusable, utility-first visualization toolkit
โ
A thematic, notebook-driven learning framework
โ
A polished, production-grade portfolio project
- ๐ Express + Graph Objects: Built using both Plotly APIs
- ๐ Charts: Line, bar, pie, box, histogram, heatmap, KDE
- ๐งญ Maps: Choropleth, Mapbox, GeoJSON overlays
- ๐งฎ Statistical Add-ons: Trendlines, Z-bands, moving averages
- ๐ Animations: Sliders, dropdown filters,
animation_frame - ๐งผ Clean Output: HTML for interactivity, PNG for documentation
- ๐งฐ Modular Design: Plotting utilities, reusable layout functions
- ๐ณ Docker Support: Containerized Jupyter environment for reproducibility
- โ Full Test Suite: Comprehensive testing with pytest
- ๐ CI/CD Pipeline: Automated testing and quality checks
- ๐ Complete Documentation: API reference, tutorials, deployment guides
| Feature | Matplotlib | Seaborn | Plotly |
|---|---|---|---|
| Interactivity | โ Static | โ Static | โ Fully interactive |
| Dashboards/Animations | โ Minimal | โ Minimal | โ Native support |
| Hover/Zoom Features | โ | โ | โ Built-in |
| Publication Quality | โ | โ | โ |
PlotlyVizPro builds on this by organizing all core concepts in modular, theme-consistent notebooks.
PlotlyVizPro was built to:
- ๐งฉ Encourage modular design using utilities and thematic structuring
- ๐ฆ Package core visualization skills into reusable functions
- ๐ก Help learners think like developers by designing reusable pipelines
- ๐งฑ Promote reproducibility with Docker + synthetic datasets
- ๐ Act as a launchpad for portfolio enhancement and tech interviews
| Area | Concepts |
|---|---|
| Basic Charts | Line, scatter, bar, pie, histogram, box plots |
| Chart Styling | Theming, axis config, layout tuning, custom tooltips |
| Interactivity | Hover templates, sliders, dropdowns, callbacks |
| Statistical Layers | Trendlines, rolling averages, ยฑz-score confidence bands |
| Dashboard Design | Subplots, grids, shared axes, spacings, annotations |
| Geo Visuals | Choropleths, GeoJSON overlays, Mapbox tokens |
| Plot Architecture | .pipe() overlays, centralized plot_utils.py, layout automation |
| Exports | Dynamic HTML and static PNG renderings for reporting |
## ๐๏ธ Project Structure
โโโ .github/ # GitHub workflows and templates
โ โโโ workflows/ # CI/CD pipelines
โ โ โโโ test.yml # Automated testing
โ โ โโโ lint.yml # Code quality checks
โ โ โโโ docker.yml # Docker build tests
โ โโโ ISSUE_TEMPLATE/ # Issue and PR templates
โโโ docs/ # Extended documentation
โ โโโ API.md # Complete API reference
โ โโโ TUTORIALS.md # Step-by-step tutorials
โ โโโ DEPLOYMENT.md # Deployment guides
โ โโโ TROUBLESHOOTING.md # Common issues & solutions
โโโ tests/ # Test suite
โ โโโ test_plot_utils.py # Utility function tests
โ โโโ test_data_generation.py
โ โโโ test_notebooks.py
โ โโโ test_streamlit_app.py
โโโ exports/ # HTML and PNG exports by notebook
โโโ notebooks/ # 10 structured Jupyter notebooks
โโโ pages/ # Streamlit pages for app mode
โโโ utils/ # Reusable plotting utilities
โโโ datasets/ # Synthetic datasets
โโโ .editorconfig # Editor configuration
โโโ .env.example # Environment variables template
โโโ .gitignore # Git ignore patterns
โโโ .pre-commit-config.yaml # Pre-commit hooks
โโโ config.py # Configuration management
โโโ Dockerfile # Docker environment for reproducibility
โโโ Makefile # Common development commands
โโโ pyproject.toml # Modern Python project config
โโโ pytest.ini # Test configuration
โโโ app.py # Main Streamlit app entry point
โโโ generate_datasets.py # Generates synthetic datasets using Faker
โโโ requirements.txt # Minimal dependencies to run the project
โโโ requirements_dev.txt # Full dev environment
โโโ requirements.txt # Minimal dependencies to run the project
โโโ README.md # You're here!
# Clone the repo
git clone https://github.com/SatvikPraveen/PlotlyVizPro.git
cd PlotlyVizPro
# Install dependencies (creates venv automatically)
make install
# Or for development (includes testing tools)
make install-dev
# Run tests
make test
# Launch JupyterLab
make run-jupyter
# Launch Streamlit app
make run-app
# See all available commands
make help# Clone the repo
git clone https://github.com/SatvikPraveen/PlotlyVizPro.git
cd PlotlyVizPro
# Create a virtual environment
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# For development (includes testing tools)
pip install -r requirements_devatmaps | Distribution plots, hexbin overlays |
| 04 | Choropleth & GeoJSON Maps | Choropleth, projections, custom shape tuning |
| 05 | Animation & Interactivity | Sliders, dropdowns, animation_frame |
| 06 | Dashboards & Subplots | Grid layouts, spacing, multi-panel views |
| 07 | Graph Objects Deep Dive | Manual axis, layout, annotation control |
| 08 | Mapbox & Geo Layers | Mapbox tokens, styles, satellite maps |
| 09 | Real-World Visualizations | COVID & Superstore use cases |
| 10 | Statistical Overlays + .pipe() | Modular overlays, Z-bands, moving average |
---
## โ๏ธ Setup Instructions
### โถ๏ธ Local Setup
```bash
# Clone the repo
git clone https://github.com/SatvikPraveen/PlotlyVizPro.git
cd PlotlyVizPro
# Create a virtual environment
python3 -m venv plotly_env
source plotly_env/bin/activate # On Windows: plotly_env\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Launch JupyterLab
jupyter lab# Build image
docker build -t plotlyvizpro .
# Run container (auto-launches JupyterLab at port 8888)
docker run -p 8888:8888 plotlyvizpro๐ก๏ธ No token/password required. Uses --allow-root for compatibility.
Launch the app with streamlit run app.py and explore:
- ๐ Real-time filtering and visualization controls
- ๐ Embedded charts from exported HTMLs
- ๐งฎ Summary statistics + quick insights
- ๐จ Toggle between chart types with ease
All datasets are synthetically generated via generate_datasets.py using the faker library.
- ๐ Fully reproducible
- ๐ License-free
- ๐ฌ Customizable complexity (sales, dates, geography, etc.)
| Type | Utilities |
|---|---|
| Core Charts | line_plot(), bar_plot(), scatter_plot(), box_plot() |
| Interactivity | Sliders, hover templates, dropdowns |
| Stats Add-ons | add_trendline(), add_moving_average(), add_zscore_band() |
| Layout Tools | make_subplots_custom(), add_annotations(), apply_theme() |
| Export Tools | save_fig_as_html(), save_fig_as_png() |
๐ Full API Reference: See docs/API.md for complete function documentation.
PlotlyVizPro includes a comprehensive test suite and CI/CD pipeline:
# Run all tests
make test
# Run with coverage report
make test-cov
# Run code quality checks
make lint
# Auto-format code
make format- โ Unit tests for plotting utilities
- โ Data generation validation
- โ Notebook structure verification
- โ Streamlit app testing
- โ CI/CD with GitHub Actions
- Black for code formatting
- Flake8 for linting
- isort for import sorting
- MyPy for type checking
- Pre-commit hooks for automated checks
Comprehensive documentation is available in the docs/ directory:
- API Reference - Complete function documentation
- Tutorials - Step-by-step guides
- Deployment Guide - Deploy to various platforms
- Troubleshooting - Common issues and solutions
Each notebook saves plots in:
exports/
โโโ html/ # Interactive outputs
โ โโโ 01_line_scatter/
โ โโโ ...
โโโ images/ # PNG renders
โ โโโ 01_line_scatter/
โ โโโ ...- ๐ Portfolio Project: Showcase your visualization skills to recruiters with modular, professional-quality notebooks and dashboards.
- ๐งโ๐ซ Learning Companion: Study Plotlyโs API differences (
plotly.expressvsgraph_objects) across notebooks. - ๐งช Interactive Reporting: Generate rich HTML reports or launch dashboards with Streamlit using synthetic, reproducible datasets.
- ๐งฐ Toolkit for Projects: Plug in your own data and reuse
plot_utils.pyutilities for fast prototyping and visualization pipelines.
A compact markdown cheatsheet available at:
docs/plotly_cheatsheet.mdIncludes:
- Plotly syntax patterns
- Utility usage demos
- Dashboard tips
- Export best practices
This project is licensed under the GNU General Public License v3.0. See the LICENSE file for more details.
- ๐ Got a bug fix or improvement? Open a PR
- ๐ง Found a bug or want to request a feature? File an issue
- โญ If this helped you, consider starring the repository!
Got an idea, stuck on something, or want to share your use-case?
๐ Visit the Discussions tab and say hello!
Explore the full suite of Python data mastery repositories:
-
๐ PandasPlayground
Modular pipelines for mastering data wrangling, merging, and analysis using pandas. -
๐ข NumPyMasterPro
A concept-to-implementation NumPy project covering arrays, broadcasting, and indexing. -
๐ MatplotlibMasterPro
Comprehensive Matplotlib practice with style guides, animations, and thematic plots. -
๐ผ๏ธ SeabornMasterPro
Complete mastery of Seaborn's statistical plots, themes, dashboards, and time series.
Each project is standalone but follows a consistent pedagogical and modular structure, forming a progressive learning track in data visualization and numerical computing with Python.


