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: 695-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 ".[test]"
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; probviz.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 probviz.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 probviz.fitting import DistributionFitter
from probviz.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                                  # 695 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.5.tar.gz (327.2 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.5-py3-none-any.whl (91.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: probviz-1.0.5.tar.gz
  • Upload date:
  • Size: 327.2 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.5.tar.gz
Algorithm Hash digest
SHA256 1a0bd4d3e8e8ae5f0f7b2996761177e52d8c9b36a2cc6302abe4883f0c5ec42b
MD5 8c91070e89b25d146a4598d1e9830ae1
BLAKE2b-256 9e115583ed7bcaef05e30e28f819e36afcd2f0a7f3b2eef020339b7f2e80d064

See more details on using hashes here.

File details

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

File metadata

  • Download URL: probviz-1.0.5-py3-none-any.whl
  • Upload date:
  • Size: 91.9 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.5-py3-none-any.whl
Algorithm Hash digest
SHA256 188351874088cd6fa0e6c15a45fd811fd02852f19dd49f9817a09b478b47afae
MD5 9c68f5981c7a0f77bafaf8915d4d5b5c
BLAKE2b-256 6b0aec37b0711dcb5294d486d022c67e6635016697dbcb3a0a8abd84bfeeb919

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

This release

1.0.5 This release

2 files

1.0.4

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