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
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.
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.
Of course, the great things from 0.4 are still in there, and some have been improved further:
- Much more documentation of Bokeh’s Python interface
- Comprehensive documentation of the BokehJS library, including live JSFiddle-based examples
- Tool improvements, including “always on” Pan tool, a Box Zoom tool, and a View Reset tool
- RGBA and Colormapped image plots from Python
- Enhanced datetime axis, with better performance and nicer ticking
- Python 3 support!
- Static image output via PhantomJS
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!
Some examples of BokehJS use can be found on the Bokeh JSFiddle page: http://jsfiddle.net/user/bokeh/fiddles/.
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
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.