mpld3: A D3 Viewer for Matplotlib
Note: mpld3 is in the process of switching maintainers: feature requests & bug reports are likely to be delayed. If you are interested in contributing to this project, please contact one of the repository owners.
- Author: Jake Vanderplas firstname.lastname@example.org
- License: BSD 3-clause
This is an interactive D3js-based viewer which brings matplotlib graphics to the browser. Please visit http://mpld3.github.io for documentation and examples.
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 setup.py 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 setup.py build
or install the package to the standard Python path using:
[~]$ python setup.py install
Or, to install to another location, use
[~]$ python setup.py 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
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
To explore the comparison between D3 renderings and matplotlib renderings for
various plot types, run the script
visualize_tests.py. 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
- 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!