Bokeh is a powerful framework for data visualization in Python. Here I take a look at straightforward plotting and visualization using this powerful library.

Credit to PythonHow. You can check him out on Youtube

bokeh.models #It is a low level interface which involves a lot of work

bokeh.plotting # It is a middle level interface

bokeh.chart # It is a  high level interface

Lets try to create scatter plot

In [130]:
from bokeh.charts import Scatter, output_file, show
import pandas as pd

 

lets create a dataframe and add some values to it for our plot

In [131]:
df = pd.DataFrame(columns=['X','Y'])

 

lets add some values to the X and Y axis

In [132]:
df['X'] = ['1','2','3','4','5']#
df['Y'] = ['5','6','4','5','3']

 

lets store the scatterplot in a variable

In [133]:
p = Scatter(df, x='X', y='Y', title='Temperature observation', xlabel='Day of Observation', ylabel='Temperature', logo=None)

 

we can save our file as html using the output_file method and we can also show our plot using the show method

In [134]:
output_file('scatterplot.html')

 

In [135]:
show(p)

 

In [ ]:

lets now plot using the bokeh.plotting interface

lets import the figure object from the plotting interface as that is the main object we will be using to plot. the idea is that you make an empty figure and you add objects to it

In [136]:
from bokeh.plotting import figure, output_file, show

 

lets store the figure object in a variable. we can set the with and height of the figure or we can leave it blank to use defaut with
and height

In [137]:
p = figure(plot_width=500, plot_height= 500, title='EarthQuakes',logo=None) # logo = None removes the bokeh.logo

 

you can also customise the plot

In [138]:
p.title_text_color = 'orange'
p.title_text_font_style = 'italic'
p.title_text_font = 'times'
p.yaxis.axis_label = 'Values'
p.xaxis.axis_label = 'Time'

 

let’s use the circle method to plot our scatter plots. the circle method takes array of X and Y values. You can also set the size of the scatter circles

In [139]:
p.circle(df['X'],df['Y'], size = [i*2 for i in ['2','4','3','6','9']] , color ='green', alpha=0.5) #alpha controls opacity

#p.triangle(df['X'],df['Y'], size = 8 , color ='green', alpha=0.5) #alpha controls opacity

 

Out[139]:
<bokeh.models.renderers.GlyphRenderer at 0xb654e10>

You can use a list to determine the size each X,Y pair of plot

In [140]:
output_file('scatterplotting.html')
show(p)

 

you can get a full HELP with the p variable by typing help(p)

In [141]:
help(p)

 

Help on Figure in module bokeh.plotting.figure object:

class Figure(bokeh.models.plots.Plot)
 |  A subclass of :class:`~bokeh.models.plots.Plot` that simplifies plot
 |  creation with default axes, grids, tools, etc.
 |  
 |
 >>>>>>>>>>>>>> and more

lets plot some time series data

In [142]:
df = pd.read_csv('stock.csv',parse_dates=['Date'])

 

In [143]:
p = figure(width=500, height=300, x_axis_type='datetime', responsive=False) # declare the x-axis as a time series axis

 

responsive = True enlarges the whole graph to cover the screen

In [ ]:

lets plot with a line graph

In [128]:
p.line(df['Date'],df['Close'], alpha=0.5)
p.line(df['Date'],df['Open'], alpha=0.5, color='red')
p.circle(df['Date'],df['Adj Close'], alpha=0.5, color='green')

 

Out[128]:
<bokeh.models.renderers.GlyphRenderer at 0xb654128>

lets save the file and also show it

In [129]:
output_file('linegraph.html')

show(p)

 

 

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *