bqplot
Interactive plotting for the Jupyter notebook, using d3.js and ipywidgets.
What it is and what it does
bqplot is a 2-D visualization system built on the Grammar of Graphics principle, designed to work natively inside Jupyter notebooks. Every element of a plot—axes, scales, marks, interactions—is an interactive widget, so you can bind them to other ipywidgets controls to create responsive, integrated GUIs without leaving the notebook.
The library depends on ipywidgets, traitlets, traittypes, numpy, pandas, and bqscales to handle the widget infrastructure, trait-based configuration, and data handling. It renders plots using d3.js on the front end, giving you both the expressiveness of a grammar-of-graphics system and the interactivity of Jupyter's widget ecosystem. You can use either a pyplot-style API or an object-model API depending on your workflow.
Use it for:
- Build interactive dashboards in Jupyter by linking plots to sliders, dropdowns, and other ipywidgets controls
- Explore pandas DataFrames interactively with linked plots and real-time filtering without writing a web app
- Create educational notebooks where students can manipulate plot parameters and see results update instantly
- Prototype data visualizations quickly in a notebook before moving to a production web framework
- Combine multiple plots with shared scales and linked selection for exploratory data analysis
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
bqplot is a 2-D interactive plotting library for Jupyter notebooks that treats every plot component as an interactive widget, enabling integration with other Jupyter widgets to build interactive visualizations.
Yes. bqplot is actively maintained, has low install friction, carries no known vulnerabilities, and solves a specific problem—interactive 2-D plotting in Jupyter—with a mature, well-established dependency stack. Install it if you need to build interactive visualizations or dashboards inside Jupyter notebooks.
Install
bqplot on PyPI
pip
pip install bqplotuv
uv add bqplotpoetry
poetry add bqplotInstalling bqplot
Before you install
Low install friction with a pure-Python wheel and six well-established runtime dependencies. Actively maintained with a recent release; the repository shows 3694 stars and the last commit was 2026-05-07.
License in practice
Licensed under Apache-2.0 (permissive), allowing free use, modification, and distribution with minimal restrictions—suitable for both open-source and commercial projects.
Quickstart
pip install bqplot
from bqplot import pyplot as plt
import numpy as np
plt.plot(np.arange(10), np.random.randn(10))
plt.show()
Requires Jupyter notebook or JupyterLab environment; JupyterLab <= 2 requires a separate labextension install via jupyter labextension install @jupyter-widgets/jupyterlab-manager bqplot
Verify before relying
- Whether JupyterLab 3+ requires a labextension install or if the widget loads automatically
- Performance characteristics when plotting large datasets with pandas
- Exact compatibility matrix for different JupyterLab and Jupyter Notebook versions
Package facts
| License | Apache-2.0 (permissive) |
| Python support | supports the current Python release (>=3.6) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 6 — ipywidgets, traitlets, traittypes, numpy, pandas, bqscales |
| Maintenance | actively maintained — 99 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 415,747/month — #6,823 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: bqplot-0.13.1-py2.py3-none-any.whl
Keywords: ipython, jupyter, widgets, graphics, plotting, d3
Tags
More Graphics packages
Pillow adds image processing capabilities to…
permissive · top 100 on PyPI
fonttoolsfonttools manipulates font files in multiple…
permissive · top 1,000 on PyPI
matplotlib-inlineEnables matplotlib figures to display inline…
permissive · top 1,000 on PyPI
pymupdfPyMuPDF extracts, renders, converts, and…
agpl · top 1,000 on PyPI
pypdfium2pypdfium2 is a Python binding to PDFium that…
permissive · top 1,000 on PyPI
altairAltair is a declarative Python library for…
permissive · top 1,000 on PyPI
bqscalesbqscales implements a grammar-of-graphics layer…
permissive · top 15,000 on PyPI
ipytreeipytree provides a tree-structure widget for…
permissive · top 15,000 on PyPI
ipymplipympl enables interactive matplotlib plots in…
permissive · top 5,000 on PyPI
ggplotggplot is a Python implementation of the…
permissive · top 15,000 on PyPI
ipywidgetsipywidgets provides interactive HTML widgets…
permissive · top 1,000 on PyPI
jupyter-leafletjupyter-leaflet provides interactive map…
permissive · top 15,000 on PyPI
jupyter_bokehRenders Bokeh visualizations directly within…
permissive · top 15,000 on PyPI
pythreejsPythreejs bridges Python and Three.js to render…
permissive · top 15,000 on PyPI
hvplothvPlot provides a high-level plotting API that…
permissive · top 5,000 on PyPI
seeq-spySeeq-spy is a Python interface for interacting…
unclear · top 15,000 on PyPI