In [1]:
from bokeh.io import output_notebook, show
output_notebook()
In [13]:
import pandas as pd
from bokeh.sampledata import stocks
ibm = pd.DataFrame(stocks.IBM)
ibm.date = pd.to_datetime(ibm.date)
ibm.head()
Out[13]:
In [6]:
ibm.volume.min()
Out[6]:
In [46]:
from bokeh.io import output_notebook, show
output_notebook()
import pandas as pd
from bokeh.sampledata import stocks
ibm = pd.DataFrame(stocks.IBM)
ibm.date = pd.to_datetime(ibm.date)
from datetime import datetime
from bokeh.models import (
ColumnDataSource,
Range1d,
Plot,
DatetimeAxis,
LinearAxis,
DatetimeTickFormatter,
DatetimeTicker,
Line,
WheelZoomTool,
)
from bokeh.properties import value
source = ColumnDataSource(ibm)
xdr = Range1d(ibm.date.min(), ibm.date.max())
ydr = Range1d(ibm.volume.min(), ibm.volume.max())
PLOT_FORMATS = dict(
x_range=xdr,
y_range=ydr,
title="",
plot_width=600,
plot_height=400,
outline_line_color=None,
toolbar_location=None,
)
AXIS_FORMATS = dict(
minor_tick_in=None,
minor_tick_out=None,
major_tick_in=None,
major_label_text_font_size="10pt",
major_label_text_font_style="normal",
axis_label_text_font_size="10pt",
axis_line_color='#AAAAAA',
major_tick_line_color='#AAAAAA',
major_label_text_color='#666666',
major_tick_line_cap="round",
axis_line_cap="round",
axis_line_width=1,
major_tick_line_width=1,
)
formatter = DatetimeTickFormatter(
formats=dict(
hours=["%B %Y"],
days=["%B %Y"],
months=["%B %Y"],
years=["%B %Y"],
)
)
xaxis = DatetimeAxis(formatter=formatter, ticker=DatetimeTicker(desired_num_ticks=3), **AXIS_FORMATS)
default_x = DatetimeAxis(**AXIS_FORMATS)
yaxis = LinearAxis(axis_label="volume", **AXIS_FORMATS)
line = Line(x='date', y='volume', line_color=value('darkcyan'), line_width=5)
plot = Plot(**PLOT_FORMATS)
plot.add_layout(default_x, 'above')
plot.add_layout(xaxis, 'below')
plot.add_layout(yaxis, 'left')
plot.add_glyph(source, line)
plot.add_tools(WheelZoomTool(dimensions=['width']))
show(plot)
In [ ]: