#!/usr/bin/env python # coding: utf-8 # In[1]: import numpy as np import pandas as pd import datetime from bokeh.io import output_notebook, show from bokeh.plotting import figure from bokeh.models import ColumnDataSource, LinearColorMapper, DatetimeTickFormatter from bokeh.palettes import Blues9, Greens9, Reds9 output_notebook() # ## Create some dummy data # In[2]: start_dt = datetime.datetime(2016,1,1) params = ['p1', 'p2', 'p3'] dfs = [] for p in params: dates = [start_dt + datetime.timedelta(minutes=int(x)) for x in np.random.randint(1,400,300).cumsum()] dfs.append(pd.DataFrame({p: np.random.randn(len(dates))}, index=dates)) df = pd.concat(dfs, axis=1) dfday = df.groupby(lambda x: x.date()).count() dfday['start'] = dfday.index dfday['end'] = [x+datetime.timedelta(days=1) for x in dfday.index] dfday.head() # ## Define colormaps for each param # In[3]: cmaps = {} cmaps['p1'] = LinearColorMapper(palette=Reds9) cmaps['p2'] = LinearColorMapper(palette=Blues9) cmaps['p3'] = LinearColorMapper(palette=Greens9) # ## Plot # In[4]: p = figure(x_axis_type="datetime", x_range=(dfday.index[0], dfday.index[-1]), y_range=[0,4], tools='xpan, xwheel_zoom, reset, save, resize', width=800, height=300) for i, par in enumerate(params): p.quad(left='start', right='end', bottom=.6+i, top=1.4+i, color={'field': par, 'transform': cmaps[par]}, source=ColumnDataSource(dfday)) p.xaxis.formatter = DatetimeTickFormatter(days=['%d-%b-%Y']) show(p) # In[ ]: # In[ ]: