Skip to main content

Probability Distribution Visualizer

An interactive probability distribution visualizer with a Streamlit web interface, a typed Python API, and toolkits for fitting, Monte Carlo simulation, and statistical testing.

CI Status Tests Docs License
Python Streamlit Docker PRs Welcome

  • Docs (GitHub Pages): https://sanskarpan.github.io/probviz/
  • 16 univariate distributions (10 continuous + 6 discrete) with PDF/PMF, CDF, quantiles, sampling, and full statistics — in the web app and the API.
  • Advanced modules (Python API): multivariate distributions, copulas, mixtures/GMM, distribution fitting, Monte Carlo, and statistical tests.
  • Production-ready: 688-test suite, typed packaging (pyproject.toml), probviz CLI, Docker/Compose, CI with coverage gate, docs + PyPI + Docker release pipelines. See CHANGELOG.md.

Gallery

Normal PDF morphing with sigma Central Limit Theorem convergence Gaussian copula dependence sweep
Beta PDF shape morph Gaussian mixture separation

Top: Normal σ sweep · CLT convergence · Gaussian-copula ρ sweep. Bottom: Beta shape sweep · mixture separation. Regenerate with python examples/generate_media.py.

Quick start

pip install probviz
probviz app

Or from source:

git clone https://github.com/sanskarpan/probviz.git
cd probviz
pip install -r requirements.txt
streamlit run web/app.py

Open http://localhost:8501. Full guide: QUICKSTART.md · docs quickstart.

Install as a package

pip install -e .
probviz app        # launch the UI
probviz test       # run tests
probviz version    # print version

Docker

docker build -t probviz .
docker run -p 8501:8501 probviz
# or
docker compose up --build

What's inside

Area Contents
Univariate Normal, Exponential, Uniform, Beta, Gamma, Chi-Square, Student-t, Weibull, Lognormal, Cauchy · Binomial, Poisson, Geometric, Negative Binomial, Hypergeometric, Discrete Uniform
Multivariate Multivariate Normal, Dirichlet, Multivariate Student-t, Wishart
Copulas Gaussian, Clayton, Gumbel, Student-t + fit_copula_to_data
Mixtures MixtureDistribution (1-D EM), GaussianMixtureModel, BayesianGMM, BIC selection
Fitting DistributionFitter, BayesianEstimator, GoodnessOfFit
Monte Carlo MonteCarloSimulator, VarianceReduction, QuasiMonteCarloSimulator
Tests hypothesis / nonparametric / descriptive dict-returning helpers
Utils validation, preprocessing, plotting, structured logging; src.visualizers facade

Project layout and conventions: docs/architecture.md. API reference: docs/api.md (rendered on the docs site).

Python API

import numpy as np
from src.distributions import NormalDistribution, BinomialDistribution

normal = NormalDistribution(mu=0, sigma=1)
x = np.linspace(-4, 4, 200)
pdf, cdf = normal.pdf(x), normal.cdf(x)
samples = normal.rvs(size=1000, random_state=42)
print(normal.get_statistics())
print(normal.interval(0.95), normal.ppf(0.975))

binomial = BinomialDistribution(n=10, p=0.3)
print(binomial.pdf(np.arange(0, 11)))
from src.fitting import DistributionFitter
from src.monte_carlo import MonteCarloSimulator

fitter = DistributionFitter(samples)
print(fitter.fit_all())

rng = np.random.default_rng(42)
sim = MonteCarloSimulator(random_seed=42)
res = sim.estimate_probability(lambda: rng.normal(0, 1) > 1.0, num_samples=100_000)
print(res["probability"], res["confidence_interval"])

Known limitations (by design)

  • The Streamlit app covers the 16 univariate distributions only; advanced modules are Python-API only.
  • Clayton/Gumbel copula pdf/rvs are bivariate-only (explicit error otherwise).
  • StudentTCopula has no closed-form cdf/pdf; use Monte Carlo via rvs.
  • MixtureDistribution EM assumes 1-D components; use the sklearn GMM wrappers for multivariate mixtures.
  • Cauchy moments are undefined — the API surfaces nan instead of masking it.

Testing

pip install -r requirements-dev.txt
pytest tests/ -q                                  # 688 tests
pytest tests/ -q --cov=src --cov-report=term      # with coverage (gate: 80%)
flake8 src/ tests/ --count --select=E9,F63,F7,F82 --statistics
mypy --config-file=pyproject.toml src/

Contributing

See CONTRIBUTING.md (setup, style, tests, PR checklist), CODE_OF_CONDUCT.md, and SECURITY.md.

License

MIT — see LICENSE. If you use this in research or teaching:

@software{probability_distribution_visualizer,
  title  = {Probability Distribution Visualizer},
  author = {sanskarpan},
  year   = {2026},
  url    = {https://github.com/sanskarpan/probviz}
}

Also see CITATION.cff.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

probviz-1.0.4.tar.gz (325.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

probviz-1.0.4-py3-none-any.whl (90.7 kB view details)

Uploaded Python 3

File details

Details for the file probviz-1.0.4.tar.gz.

File metadata

  • Download URL: probviz-1.0.4.tar.gz
  • Upload date:
  • Size: 325.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for probviz-1.0.4.tar.gz
Algorithm Hash digest
SHA256 27a86a82d4d65a520eca40e0d546f040d420ada7dca70b62ed988842c3375df0
MD5 cb51c368f2abc335e1020d007c36015a
BLAKE2b-256 4be30844e0c155bc986bb77d593681968520b6dc2d9a5ea597d486ae59cabdc3

See more details on using hashes here.

File details

Details for the file probviz-1.0.4-py3-none-any.whl.

File metadata

  • Download URL: probviz-1.0.4-py3-none-any.whl
  • Upload date:
  • Size: 90.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for probviz-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 0b66b435a2174ba732e2d4ddb682a2f23427e545db45a76b86dd913b6b98e2e4
MD5 b8e657f6d14b836e4f14eae52c055ea6
BLAKE2b-256 7c7ed4aa0c7d1cb0600773ed617000fddc6cb954c37266888bf731a9ac7e8c0a

See more details on using hashes here.

Release history Release notifications | RSS feed

1.0.8

2 files

1.0.7

2 files

1.0.6

2 files

1.0.5

2 files

This release

1.0.4 This release

2 files

1.0.3

2 files

1.0.2

2 files

1.0.1

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page