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
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 |
PlotlyVizPro/
โโโ exports/ # HTML and PNG exports by notebook
โโโ notebooks/ # 10 structured Jupyter notebooks
โโโ pages/ # Streamlit pages for app mode
โโโ utils/ # Reusable plotting utilities
โโโ cheatsheets/ # Markdown-based syntax guides
โโโ .gitignore # Ignores env folders, checkpoints, etc.
โโโ Dockerfile # Docker environment for reproducibility
โโโ 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
โโโ README.md # Youโre here!
# | Notebook Title | Concepts & Charts |
---|---|---|
01 | Line & Scatter Charts | Line, scatter, bubble, tooltips, color maps |
02 | Bar, Pie & Box Charts | Categorical visualizations |
03 | Histogram, KDE & Heatmaps | 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 |
# 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() |
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.express
vsgraph_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.py
utilities for fast prototyping and visualization pipelines.
A compact markdown cheatsheet available at:
cheatsheets/plotly_cheatsheet.md
Includes:
- 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.