URL: http://bokeh.pydata.org/en/latest/docs/gallery/stocks.html
Most examples work across multiple plotting backends, this example is also available for:
In [ ]:
import numpy as np
import pandas as pd
import holoviews as hv
from holoviews import opts
hv.extension('matplotlib')
hv.output(fig='svg', dpi=120)
In [ ]:
from holoviews.operation.timeseries import rolling
from bokeh.sampledata.stocks import AAPL, GOOG, IBM, MSFT
def get_curve(data, label=''):
df = pd.DataFrame(data)
df['date'] = df.date.astype('datetime64[ns]')
return hv.Curve(df, ('date', 'Date'), ('adj_close', 'Price'), label=label)
hv.Dimension.type_formatters[np.datetime64] = '%Y'
aapl = get_curve(AAPL, label='AAPL')
goog = get_curve(GOOG, label='GOOG')
ibm = get_curve(IBM, label='IBM')
msft = get_curve(MSFT, label='MSFT')
avg_curve = rolling(aapl, rolling_window=30).relabel('Average')
avg_scatter = hv.Scatter((np.array(AAPL['date'], dtype=np.datetime64), np.array(AAPL['adj_close'])),
('date', 'Date'), ('adj_close', 'Price'), label='close')
In [ ]:
color_cycle = hv.Cycle(values=['#A6CEE3', '#B2DF8A','#33A02C', '#FB9A99'])
plot_opts = opts.Overlay(aspect=1, fig_size=200, legend_position='top_left')
curve_opts = opts.Curve(color=color_cycle)
stocks = (aapl * goog * ibm * msft).opts(plot_opts, curve_opts)
appl_stats = (avg_scatter * avg_curve).opts(
opts.Scatter(alpha=0.2, s=4, color='darkgrey'),
opts.Curve(color='navy'), plot_opts)
stocks + appl_stats