以下代码不会生成图形:
import pandas
import numpy as np
from bokeh.plotting import figure, show, output_file
from bokeh.io import output_notebook
from datetime import datetime
output_notebook()
TOOLS="hover,crosshair,pan,wheel_zoom,zoom_in,zoom_out,box_zoom,undo,redo,reset,\
tap,save,box_select,poly_select,lasso_select,"
df = pandas.read_csv('./logs.csv')
df['datetime'] = pd.to_datetime(df['datetime'])
xvals = df['datetime'].dt.strftime('%Y-%m-%d')
yvals = df['datetime'].dt.strftime('%H:%M:%S')
p = figure(title="Test Title", width=500, height=500, \
x_axis_type="datetime", y_axis_type="datetime", \
x_range=(df.iloc[-1]['datetime'].strftime('%Y/%m/%d'),\
df.iloc[0]['datetime'].strftime('%Y/%m/%d')),\
y_range=('00:00:00','23:59:59'),\
tools=TOOLS)
p.scatter(xvals, yvals, alpha=0.5)
show(p)
生成的该图是空白图。有什么问题吗?
编辑:
我使用以下代码更新了代码
xvals = df['datetime'].dt.date
yvals = df['datetime'].dt.time
p = figure(title="Activity history", width=800, height=500, \
x_axis_type='datetime', y_axis_type='datetime',\
x_axis_label="Date", y_axis_label="Time",\
tools=TOOLS)
p.scatter(xvals, yvals, alpha=0.3)
show(p)
这会产生一个图形。
答案 0 :(得分:1)
就我所知,这就是您想要的(使用一些项目样本数据,因为您没有提供任何运行代码的方式):
from bokeh.plotting import figure, show
from bokeh.sampledata.commits import data
p = figure(x_axis_type="datetime", y_axis_type="datetime")
p.circle(x=data.index, y=data.index.time)
show(p)
顾名思义,datetime
轴类型将时间戳记视为日期时间。也就是说,这些时间被解释为大纪元第一年第一天的一天中的小时。这就是为什么轴以 1/01 和 1/02 开始和结束的原因。您可能要使用customize the tick formatter仅显示小时。
供参考,data
如下所示: