Source code for rook.dashboard.plots.pulse
import pandas as pd
from bokeh.models import ColumnDataSource
from bokeh.plotting import figure
from bokeh.transform import jitter
from .base import PlotView
DAYS = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
[docs]
class PulsePlot(PlotView):
[docs]
def data(self):
pdf = pd.DataFrame()
pdf["day"] = self.df["time_start"].dt.dayofweek
pdf["day"] = pdf["day"].apply(lambda x: DAYS[x])
pdf["time"] = self.df["time_start"].dt.time
return pdf
[docs]
def plot(self):
plot = figure(
title="Requests by Time of Day",
tools="",
toolbar_location=None,
sizing_mode="scale_width",
# width=800,
height=300,
y_range=list(reversed(DAYS)),
x_axis_type="datetime",
)
plot.circle(
x="time",
y=jitter("day", width=0.6, range=plot.y_range),
source=ColumnDataSource(self.data()),
alpha=0.3,
)
plot.xaxis.formatter.days = ["%Hh"]
plot.x_range.range_padding = 0
plot.ygrid.grid_line_color = None
return plot