简体   繁体   English

如何使用Python的Bokeh向日期时间轴添加更多x轴刻度和标签?

[英]How do you add more x axis ticks and labels to datetime axis using Python's Bokeh?

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. 我一直在测试Python的Bokeh,特别是烛台图表工具,但一直无法弄清楚如何在图表中添加5个以上的日期时间标签/刻度。 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: 这是结果图像:

FB多年烛台图

First, thanks for trying Bokeh! 首先,感谢您尝试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. 我已经在我们的问题跟踪器( https://github.com/ContinuumIO/bokeh/issues/665 )中打开了一个问题,以增强您的回答和解决您的请求的能力。 Feel free to participate in the comments if you want. 如果需要,可以随时参与评论。

Cheers. 干杯。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM