Skip to main content
This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (
Help us improve Python packaging - Donate today!

D3 Viewer for Matplotlib

Project Description

This is an interactive D3js-based viewer which brings matplotlib graphics to the browser. Please visit []( for documentation and examples.

You may also see the [blog post](, or the [IPython notebook examples]( available in the notebooks directory of this repository.

[![version status](]( [![downloads](]( [![build status](](


mpld3 provides a custom stand-alone javascript library built on D3, which parses JSON representations of plots. The mpld3 python module provides a set of routines which parses matplotlib plots (using the [mplexporter]( framework) and outputs the JSON description readable by mpld3.js.


mpld3 is compatible with python 2.6-2.7 and 3.3-3.4. It requires [matplotlib]( version 1.3 and [jinja2]( version 2.7+.

Optionally, mpld3 can be used with [IPython]( notebook, and requires IPython version 1.x or (preferably) version 2.0+.

This package is based on the [mplexporter]( framework for crawling and exporting matplotlib images. mplexporter is bundled with the source distribution via git submodule.

Within the git source directory, you can download the mplexporter dependency and copy it into the mpld3 source directory using the following command:

[~]$ python submodule

The submodule command is not necessary if you are installing from a distribution rather than from the git source.

Once the submodule command has been run, you can build the package locally using

[~]$ python build

or install the package to the standard Python path using:

[~]$ python install

Or, to install to another location, use

[~]$ python install –prefix=/path/to/location/

Then make sure your PYTHONPATH environment variable points to this location.

Trying it out

The package is pure python, and very light-weight. You can take a look at the notebooks in the examples directory, or run, which will create a set of plots and launch a browser window showing interactive views of these plots.

For a more comprehensive set of examples, see the [IPython notebook examples]( available in the notebooks directory.

Test Plots

To explore the comparison between D3 renderings and matplotlib renderings for various plot types, run the script This will generate an HTML page with the D3 renderings beside corresponding matplotlib renderings.


Many of the core features of matplotlib are already supported. And additionally there is some extra interactivity provided via the plugin framework. The following is a non-exhausive list of features that are yet to be supported:

  • tick specification & formatting
  • some legend features
  • blended transforms, such as those required by axvlines and axhlines
  • twin axes (i.e. multiple scales on one plot) tied together

If any of these look like something you’d like to tackle, feel free to submit a pull request!

Release History

Release History

This version
History Node


History Node


History Node


History Node


Download Files

Download Files

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

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
mpld3-0.3.tar.gz (788.5 kB) Copy SHA256 Checksum SHA256 Source Nov 22, 2016

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting