I've been testing out Python's Bokeh, specifically the candlestick chart tools but have been unable to figure out how to add more than 5 datetime labels/ticks to my chart. Any insight would be appreciated. Here's the code:
from math import pi
import pandas as pd
import pandas.io.data as web
from bokeh.plotting import *
stocks = 'FB'
#######################################################
date_today = time.strftime("%x")
def get_px(stock, start, end):
return web.get_data_yahoo(stock, start, end)
x = get_px(stocks, '1/1/2013', date_today)
######################################################
######## Function Defined ##############################
def dateConvert(df):
dt = df.index
df['Date'] = dt
df.reset_index(drop=True)
return df
##### transform data for useability #####
df = dateConvert(x)
df = df.reset_index(drop=True)
df = df.sort_index(axis=1)
cols = ['adj_close', 'close', 'date', 'high', 'low', 'open', 'volume']
df.columns = cols
ewma50 = pd.ewma(df.close, span=50)
ewma200 = pd.ewma(df.close, span=200)
#######################################################
##### PLOT CODE #######################################
mids = (df.open + df.close)/2
spans = abs(df.close-df.open)
inc = df.close > df.open
dec = df.open > df.close
w = 24*60*60*1000 # half day in ms
output_file("FB_candlestick.html", title="FB_candlestick.py example")
figure(x_axis_type = "datetime", tools="pan,wheel_zoom,box_zoom,reset,previewsave",
width=1000, name="candlestick")
hold()
segment(df.date, df.high, df.date, df.low, color='black')
rect(df.date[inc], mids[inc], w, spans[inc], fill_color="#D5E1DD", line_color="black")
rect(df.date[dec], mids[dec], w, spans[dec], fill_color="#F2583E", line_color="black")
line(df.date, ewma50, color='blue', legend='ewma 50 day')
line(df.date, ewma200, color='red', legend='ewma 200 day')
curplot().title = "FB Candlestick"
xaxis().major_label_orientation = pi/4
grid().grid_line_alpha=0.3
curplot().width=1200
show()
Here is the resulting image:
First, thanks for trying Bokeh! Answering to your question, right now, you are not able to specify the amounts of ticks in the plot. It is automatically calculated. I have opened an issue in our issue tracker (https://github.com/ContinuumIO/bokeh/issues/665) to work in an enhancement to answer and solve your request. Feel free to participate in the comments if you want.
Cheers.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With