Python Bokeh中X轴上的日期时间
我很难理解datetime在Bokeh是如何工作的 我的代码在x轴上输出毫秒,如果轴类型为“datetime”,这似乎是默认值,但我希望每5年将其分隔一次 我怎样才能在博基做到这一点?日期在1950年之前,所以我不能使用时间戳。当我排除datetime轴类型时,它会在x轴上将每个值显示为记号。当我试图将输入的数据更改为datetime对象时,Bokeh拒绝了它 我读过关于这个主题的其他帖子,以及博克关于这个主题的文档 DatetimeTickFormatter,它似乎也不适合我 我的绘图代码如下:Python Bokeh中X轴上的日期时间,python,bokeh,Python,Bokeh,我很难理解datetime在Bokeh是如何工作的 我的代码在x轴上输出毫秒,如果轴类型为“datetime”,这似乎是默认值,但我希望每5年将其分隔一次 我怎样才能在博基做到这一点?日期在1950年之前,所以我不能使用时间戳。当我排除datetime轴类型时,它会在x轴上将每个值显示为记号。当我试图将输入的数据更改为datetime对象时,Bokeh拒绝了它 我读过关于这个主题的其他帖子,以及博克关于这个主题的文档 DatetimeTickFormatter,它似乎也不适合我 我的绘图代码如下
r = requests.get('https://raw.githubusercontent.com/FreeCodeCamp/ProjectReferenceData/master/GDP-data.json')
data = json.loads(r.text)
chart_data = {
'date': [a[0] for a in data['data']], #this is the problem data
'gdp': [a[1] for a in data['data']],
}
source = ColumnDataSource(chart_data)
hover = HoverTool(
tooltips=[
('GDP', '@gdp{$0,0.00}'),
('Date', '@date{%Y - %B}'),
],
formatters={
'date' : 'datetime',
}
)
bar = figure(x_range=chart_data['date'],
x_axis_type='datetime',
plot_height=750,
plot_width=1000,
tools='wheel_zoom, reset, save',
title=data['source_name'])
bar.vbar(x='date', top='gdp', width=0.9, source=source)
bar.add_tools(hover)
#visual settings
bar.xaxis.formatter = DatetimeTickFormatter(years = ['%Y'])
bar.xaxis.major_label_orientation = 'vertical'
bar.xaxis.minor_tick_line_color = None
bar.xgrid.grid_line_color = None
bar.yaxis.formatter = NumeralTickFormatter(format='$0,0.00')
bar.ygrid.grid_line_color = None
show(bar)
谢谢你的帮助,这让我快发疯了 感谢bigreddot的帮助。我的问题是,由于我设置了x_range属性,而不是默认设置为datetime,因此我的绘图被用作分类范围。什么是图表数据['date']?感谢您的帮助!如果查看链接中的json,则日期格式为“%Y-%m-%d”。例如:“1947-01-01”。传递字符串序列会产生一个分类范围,这就是日期时间轴不起作用的原因,也是显示所有值的原因。分类轴显示所有因子。我建议转换为实时对象,Bokeh将处理这些对象。然后,如果您不想要标准的datetime ticker,您可以使用,例如YearSticker,因此我转换为datetime对象,但Bokeh给了我一个ValueError。ValueError无法识别的范围输入:“%s”%strrange\u输入。我更改:'date':[datetime.strTimea[0],“%Y-%m-%d”用于数据中的['data']]这是否不正确?不再设置x_范围。对于real datetime对象,默认的DataRange1d是您想要的。