We are excited to announce the release of version 0.4.1 of Bokeh, an interactive web plotting library for Python!

This release includes preliminary Matplotlib support, improved plots of categorical data, a flexible hover tool, and a Scala interface for Bokeh (with examples).

Get It Now!

If you are using Anaconda, you can install with conda:

    conda install bokeh

Alternatively, you can install with pip:

    pip install bokeh

About Bokeh

Bokeh is an interactive web plotting library for large and realtime datasets, combining the novel graphics of d3 with the ease of use of Python. For more information, please visit the Bokeh homepage, and consult the Technical Vision and FAQ.

What’s New?

This point release comes right on the heels of the 0.4 release a few weeks ago, but we couldn’t wait for the 0.5 release to get some of these great features out to the world:

  • Improved Matplotlib compatibility layer, beyond what 0.4 offered: LineCollections and better line styling
  • Scala interface and examples
  • A stylable, flexible hover tool is finally available (in this example, click the “hover” button to turn it on)

We have also greatly improved our handling of categorical axes and data: Les Miserable example. This means that everything from histograms to bar plots and candle plots to statistical heatmaps are much easier to produce from Bokeh. Furthermore, combined with the improved hover tool, it means that interactive infographics as complex as the Periodic Table can now be easily produced from Python.

What’s Old?

Of course, the great things from 0.4 are still in there, and some have been improved further:

What’s Awesome?

We have done some initial work on automatic downsampling in the Bokeh server. This means that the client and server coordinate to transfer only the data needed to for your current viewport. Think of it as Google Maps over arbitrary large datasets.

The following video shows interactive pan & zoom of 2.3 million data points in 3 financial timeseries. At each zoom level, the server clips and downsamples the data dynamically so that transfer to the client is fast.

The source code for this example is fairly small.

This next video shows 4GB of historical ocean surface temperature data from NASA/JPL, with interactive sliders and realtime downsampling from the Bokeh plot server.

The code for this example is a little more involved, but it’s still fairly concise for the level of functionality here.

These are currently on a demo branch of the Bokeh source tree, but we plan to expose this functionality in the 0.5 release. They are only the beginnings of much richer “big data” visualization capability that will be coming online in Bokeh over the next several months.

If you have a large dataset visualization problem like this, and would like our help applying Bokeh to your problems, please send us an email!


A unique feature of Bokeh is that it includes its own Javascript library, BokehJS, that implements a reactive scenegraph representation of the plot, and does high-performance rendering directly to HTML5 Canvas.

BokehJS is also available by CDN for use in standalone Javascript applications:

Let’s Talk PyCon 2017 – Thoughts from the Anaconda Team
Let’s Talk PyCon 2017 – Thoughts from the Anaconda Team
Let’s Talk PyCon 2017 – Thoughts from the Anaconda Team

Some examples of BokehJS use can be found on the Bokeh JSFiddle page: http://jsfiddle.net/user/bokeh/fiddles/.

What’s Next?

The release of Bokeh 0.5 is planned for late March. Some notable features we plan to include are:

  • More refinements to interactions & tools
  • Prettification” of plots and toolbar, and the bokeh server index page
  • Even more Matplotlib support
  • Exposing ServerDataSource and RemoteDataSource objects
  • Tutorials, exercises & more examples

Issues, enhancement requests, and pull requests can be made on the Bokeh Github page: https://github.com/continuumio/bokeh

Questions can be directed to the Bokeh mailing list: [email protected]

How Can I Help?

We would love to get contributions from folks. There are many easy places to plug in:

  • touch events and mobile experience overall
  • styling/design around plots, frames, etc.
  • graphical configuration tools
  • building out better Matplotlib support
  • more language bindings: Scala, Ruby, R, Matlab, C, C++, etc.
  • more nice-looking examples for our gallery page

Check out the gallery, play with the source, and follow us on Twitter @bokehplots!

If you would like some help incorporating Bokeh into your Notebooks, apps, or dashboards, please send an email to [email protected] to inquire about Continuum’s training and consulting services – not just for Bokeh, but for anything in the full NumPy/SciPy/PyData stack.