Getting Started with Bokeh for Python | Emile Gill


Effortlessly elegant interactive information visualisations in Python

Photo by Denise Johnson on Unsplash

In this text I purpose to provide you an introduction to Bokeh, detailing what it’s, why you ought to be utilizing it and how one can simply get began!

Bokeh is a neat Python library that permits us to shortly and simply create high-performance, skilled interactive information visualisations and internet apps. You can try some examples of the facility and vary of what Bokeh can do right here.

An instance of what could be carried out with Bokeh.

Bokeh’s most attractive high quality is that it manages to stability each simplicity- with only a few traces of code required to create advanced interactive visualisations- and the pliability for superior customisation, do you have to require it. Whether you merely wish to create prettier graphs in your Jupyter notebooks, or develop and deploy full internet functions, Bokeh is a good visualisation software for any Python consumer to have.


Bokeh’s Plot class, offers the canvas on which we are able to construct our visualisations. To get began making a visualisation in Bokeh we are able to merely instantiate a determine object:

If we had been to run the above code we’d produce a clean determine object, which might then be output as an HTML file, saved to the trail specified, after which displayed in a brand new tab of an online browser. We may even have used the output_notebook() perform, if we had been working in a Jupyter pocket book and needed to show our visualisation straight in an output cell.

This isn’t very inspiring thus far, as we’ve but so as to add any data- however we’ll see within the subsequent part how we are able to begin constructing on prime of our determine to shortly add element to our plot.


Glyphs are essentially the most basic plotting unit in Bokeh. They primarily encompass visible markers, with attributes which may be related with our information. From easy line glyphs, to hexagonal grids of tiles (HexTile glyph), there are a mess of various glyphs accessible to us, relying on our visualisation wants.

We can prolong the above code, so as to add a glyph to our determine, as merely as:

The energy of Bokeh is seen instantly. With a single further line of code, now we have added some information to our plot which we are able to fiddle with and discover immediately with Bokeh’s out of the field interactivity. The plot instruments seen on the appropriate of the determine allow us to pull, zoom and reset our plot. We may even save our view to a picture file, utilizing the SaveTool function.

Exploring Bokeh’s inbuilt plot instruments, with a easy line glyph.

You can discover the number of glyphs we’re ready to select from, and their related attributes, right here.

Adding a number of glyphs to a determine is not any difficulty, we merely name all of the glyph strategies we require individually and Bokeh will layer them onto our determine within the order specified.

Multiple glyphs overlayed on a determine.

Data Sources

It couldn’t be simpler to specify our information to Bokeh objects. Bokeh is appropriate with the acquainted information codecs of lists, NumPy arrays and pandas DataFrames; all of which we are able to move straight as arguments to glyph strategies.

Line glyph from NumPy supply information.

Bokeh additionally comes inbuilt with its personal information format, the ColumnDataSource. This varieties the elemental underlying information construction utilized by Bokeh objects. In truth, after we provide lists, NumPy arrays, or pandas DataFrames to Bokeh, these are implicitly transformed to ColumnDataSource objects behind the scenes. ColumnDataSources make it straightforward to share information between glyphs and hyperlink the chosen information, in addition to permitting us to produce further information, which, as we’ll see later, can be utilized so as to add annotations to our visualisation.

We can outline a ColumnDataSource within the following method:

Once now we have outlined a ColumnDataSource, we are able to simply entry information by merely specifying its column title, and passing our CDS because the supply parameter of a plotting methodology. Below we create an instance plot utilizing one among Bokeh’s pattern CSV datasets that we learn right into a pandas DataBody after which convert to a ColumnDataSource.

Apple inventory opening worth over time (dataset from Bokeh’s pattern information).

Configuring Plot Tools

As now we have seen from instantiating a determine object in Bokeh, plots come with varied inbuilt interactive options. If we don’t articulate these explicitly, Bokeh will present the default suite of instruments. However, ought to we want, we may additionally outline these when creating our determine object:

You can discover all of the plot software choices which are accessible within the official documentation right here.


One of the plot instruments now we have accessible in Bokeh, deserving of its personal part, is the HoverTool class. This is a neat function that permits us to uncover further particulars from our information, just by hovering above an object.

We can specify a HoverTool by offering a listing of (label, worth) tuples for the info we want to be included.

Field names prepended with @ are related with ColumnDataSource column headers and names starting with $ are “special fields” similar to plot metadata reminiscent of $index (index of information level), $x (x-coordinate of cursor).

Adding a hover software to our Apple inventory plot.

Colour Mapping

Bokeh offers varied inbuilt color palettes for us to select from, the total checklist of which could be discovered right here. A helpful function for styling our visualised information with a specified palette is the “Color Mappers” accessible to us in Bokeh. These permit us to visually elucidate some property of the info, relying on its worth.

For instance, the linear_cmap perform permits us to assign colors relying on a price’s place on a linear scale:

Example of a linear colour-mapping, utilized to our earlier sine plot.

Similarly a log_cmap perform exists, working in precisely the identical method however with a logarithmic scale. We may even embrace a ColorBar alongside out plot to explicate the mapping of colors to values.

For categorical information, we are able to use the CategoricalColorMapper class to outline a relationship between varied categorical components and a specified color palette. Bokeh has an in depth information for dealing with categorical information right here, the place you possibly can learn extra about this could you want.


Annotations reminiscent of titles, legends, axis labels, information labels can be added to plots. There are many various choices to customize our plots right here; I can’t delve into an excessive amount of element on these as there may be loads of good documentation on what could be carried out right here and right here.

The under instance reveals a few of the most typical properties we’d wish to outline when making a determine:

If now we have a number of plots that we wish to mix in the identical output, we are able to use the bokeh.layouts module to outline how these are organized.

Row and Columns

The row and column capabilities permit us to organise plots into rows, columns, or a nested format shaped of some mixture of the 2.


A uniform grid of plots is simple to create utilizing the gridplot perform.


We may even show our visualisations in a tabbed format, with the flexibility to toggle between completely different plots.

Linked Plots

To hyperlink the axes of plots, we are able to merely outline their axis vary attributes to be equal:

p3.x_range = p2.x_range = p1.x_range
p3.y_range = p2.y_range = p1.y_range

To hyperlink the number of information in our visualisations, all that’s required is for them to share the identical information supply:

Photo by Josh Boot on Unsplash

We are actually properly outfitted with the basics of Bokeh and will have every part we have to get began experimenting and creating our personal customized visualisations. That mentioned, that is solely the tip of the iceberg in the case of Bokeh’s full capabilities as a visualisation software.

In my subsequent publish we’ll discover the way to take what now we have discovered one stage additional, and transition from creating lovely visualisations to creating fascinating internet functions, with much more interactivity. I’ll see you again then, however for now:

Thanks for studying!


Source hyperlink

Write a comment