<jupyter_start><jupyter_text>URL: http://bokeh.pydata.org/en/latest/docs/gallery/stocks.htmlMost examples work across multiple plotting backends, this example is also available for:* [Bokeh - stocks example](../bokeh/stocks_example.ipynb)<jupyter_code>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)<jupyter_output><empty_output><jupyter_text>Defining the data<jupyter_code>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')<jupyter_output><empty_output><jupyter_text>Plot<jupyter_code>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<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.1630057803468208, 'fraction_numerical': 0.01676300578034682, 'mean_word_length': 6.526086956521739, 'pattern_counts': {'":': 0, '<': 13, '<?xml version=': 0, '>': 13, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '3', 'dir': 'jupyter-structured-clean-dedup', 'id': '226329', 'license': 'BSD-3-Clause', 'n_tokens_mistral': 695, 'n_tokens_neox': 662, 'n_words': 112, 'path': 'examples/gallery/demos/matplotlib/stocks_example.ipynb', 'repo_name': 'ppwadhwa/holoviews', 'size': '1730'}