Published: May 05, 2015
Last Updated: Oct 28, 2020
Oct 2020

Bokeh is one of the principal libraries in Python for creating scientific plots and data visualizations that render in the browser via JavaScript. Such tools, compared to desktop tools that create static images, make it easy to reuse code for exploratory work in web applications. Bokeh is particularly good for this. The library is mature and full-featured. What we like about Bokeh: it's great at keeping to its concern as a presentation layer tool and not trying to take on concerns such as data aggregation (see ggplot) or web app development (such as Shiny or Dash). This makes it a joy to use when separation of concerns is important to you. Bokeh does provide web UI widgets and can run in server mode, but you can take or leave these features as you see fit. Bokeh is flexible, and it doesn't make too many assumptions about how you'll use it nor does it have many dependencies (such as pandas or notebooks).

May 2015

In the world of data science and analytics, much of the work is done using Python and R, languages which sadly offer few options for web-accessible plotting of visualizations. One approach is to convert the result of analysis into something that can be easily visualized and interacted with in the browser. We’re aware of two tools that are an attempt to do this. Bokeh is a Python and JavaScript library that allows you to create interactive visualizations “in the style of D3.js” but with high performance over large or streaming data sets. Vega is a declarative visualization grammar for D3 that consumes server-generated JSON datasets and translates visualization descriptions into D3.js code.