以下代码不生成图表:
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)
这会产生一个图表。
好的,据我所知,这就是你想要的(使用一些项目样本数据,因为你没有提供任何东西来运行你的代码):
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
看起来像这样: