#!/usr/bin/env python # coding: utf-8 # In[1]: import pandas as pd from bokeh.charts import TimeSeries, show, output_file, vplot, output_notebook output_notebook() # In[2]: # read in the S&P 500 Index Fund from the Yahoo Finance API GSPC = pd.read_csv("https://ichart.yahoo.com/table.csv?s=^GSPC", parse_dates=['Date']) FBIDX = pd.read_csv("https://ichart.yahoo.com/table.csv?s=FBIDX", parse_dates=['Date']) NDX = pd.read_csv("https://ichart.yahoo.com/table.csv?s=^NDX", parse_dates=['Date']) SO = pd.read_csv("https://ichart.yahoo.com/table.csv?s=SO", parse_dates=['Date']) # add column data for correct printing of dates in hovertool GSPC['Str Date'] = GSPC['Date'].map(lambda x: x.strftime('%Y-%m-%d')) FBIDX['Str Date'] = FBIDX['Date'].map(lambda x: x.strftime('%Y-%m-%d')) NDX['Str Date'] = NDX['Date'].map(lambda x: x.strftime('%Y-%m-%d')) SO['Str Date'] = SO['Date'].map(lambda x: x.strftime('%Y-%m-%d')) # show sample data print('GSPC') print(GSPC.head()) print() print('FBIDX') print(FBIDX.head()) print() print('NDX') print(NDX.head()) print() print('SO') print(SO.head()) # In[3]: data = dict( Date = GSPC['Date'], GSPC = GSPC['Adj Close'], FBIDX = FBIDX['Adj Close'], NDX = NDX['Adj Close'], SO = SO['Adj Close'], SDate = GSPC['Str Date'], ) print(type(data['Date'][0])) print(type(data['GSPC'][0])) # In[4]: from bokeh.models import HoverTool hover = HoverTool( tooltips = [ ("Date", "@SDate"), ("Adj Close", " $y{$0.00}"), ] ) ts_stocks = TimeSeries(data, x = 'Date', y = ['GSPC', 'FBIDX', 'NDX', 'SO'], color = ['cadetblue', 'firebrick', 'limegreen', 'hotpink'], tools=['box_zoom', 'pan', 'save', hover, 'resize', 'reset', 'wheel_zoom'], title = 'Stock Time Series', ylabel = 'Stock Prices', legend=True ) show(ts_stocks) # In[ ]: