散景图无法正确绘制

时间:2019-02-18 12:56:25

标签: python pandas bokeh

以下代码不会生成图形:

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)

这会产生一个图形。

1 个答案:

答案 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)

enter image description here

顾名思义,datetime轴类型将时间戳记视为日期时间。也就是说,这些时间被解释为大纪元第一年第一天的一天中的小时。这就是为什么轴以 1/01 1/02 开始和结束的原因。您可能要使用customize the tick formatter仅显示小时。

供参考,data如下所示:

enter image description here