Book Image

Hands-On Data Visualization with Bokeh

By : Kevin Jolly
Book Image

Hands-On Data Visualization with Bokeh

By: Kevin Jolly

Overview of this book

Adding a layer of interactivity to your plots and converting these plots into applications hold immense value in the field of data science. The standard approach to adding interactivity would be to use paid software such as Tableau, but the Bokeh package in Python offers users a way to create both interactive and visually aesthetic plots for free. This book gets you up to speed with Bokeh - a popular Python library for interactive data visualization. The book starts out by helping you understand how Bokeh works internally and how you can set up and install the package in your local machine. You then use a real world data set which uses stock data from Kaggle to create interactive and visually stunning plots. You will also learn how to leverage Bokeh using some advanced concepts such as plotting with spatial and geo data. Finally you will use all the concepts that you have learned in the previous chapters to create your very own Bokeh application from scratch. By the end of the book you will be able to create your very own Bokeh application. You will have gone through a step by step process that starts with understanding what Bokeh actually is and ends with building your very own Bokeh application filled with interactive and visually aesthetic plots.
Table of Contents (10 chapters)

Key concepts and the building blocks of Bokeh

While going through this book, you will come across some terms that are fundamental to understanding the Bokeh package. This section will take you through them.

The following are some key definitions related to Bokeh:

  • Application: The Bokeh application is a rendered Bokeh document that runs in the browser
  • Glyphs: Glyphs are the building blocks of Bokeh, and they are the lines, circles, rectangles, and other shapes that you see on a Bokeh plot
  • Server: The Bokeh server is used to share and publish interactive plots and apps to an audience of your choice
  • Widgets: Widgets in Bokeh are the sliders, drop-down menus, and other small tools that you can embed into your plot to add some interactivity

Plot outputs

There are two methods you can use to render your plot:

  • output_file: This method is used to output your plot as an HTML file and can be used as illustrated in the following code:
output_file('plot.html')
  • output_notebook: This is used to output your plot in the Jupyter Notebook you are presently working on and can be used as illustrated in the following code:
output_notebook()

Interfaces:

The first step to understanding interfaces is to understand what a class and a method are. Think of a class as a vessel that holds different types of cookie together. The vessel in this case is the class and the cookies are the methods that give the vessel some functionality, in our case, as a container for the cookies.

Since Python is an object-oriented programming language, it uses classes to group different objects that it creates together.

A class by itself is useless unless it has some functionality associated with it. These functionalities are provided to classes by methods.

Bokeh provides a mid-level plotting interface, similar to that of matplotlib , which is known as bokeh.plotting. The main class in the bokeh.plotting interface is the Figure class, which includes methods for adding different kinds of glyphs to a plot.

A user can create a Figure object by using the figure function, as illustrated in the following code:

from bokeh.plotting import figure

# create a Figure object
p = figure(plot_width=500, plot_height=400, tools="pan,hover")

In Bokeh, the figure function, as illustrated in the preceding code, is used to initialize and store the contents of your plot. The variable p in the preceding code now holds information about the plot, including its height, width, and the kind of tools the plot will use. Since figure is our main class, methods such as line, circle, and so on can be added to our diagram in order to create the plot.