繁体   English   中英

在散景中获取正确的日期时间x轴间隔

[英]Getting correct intervals on datetime x-axis in Bokeh

我有下面的代码来绘制堆积的条形图。 如何正确处理dates列表中的dates格式和x轴,以获取与线性时间相对应的x点之间的间距?

dates = ['2018-01-25 13:04:59',
 '2018-01-26 06:16:23',
 '2018-01-26 11:03:12',
 '2018-01-26 14:10:33']

animals = ["pig", "cow", "ape"]

colors = ["#c9d9d3", "#718dbf", "#e84d60"]

data = {'dates' : dates,
        'pig'   : [2, 1, 4, 3],
        'cow'   : [5, 3, 4, 2],
        'ape'   : [3, 2, 4, 4]}

source = ColumnDataSource(data=data)

p = figure(x_range=dates, plot_height=350)

p.vbar_stack(animals, x='dates', width=0.9, color=colors, source=source,
             legend=[value(x) for x in animals])

i

如果我对您的理解正确,实际上这并不是很难实现的:

您需要做的第一件事是将时间戳转换为可以绘制的时间戳,因此第一个时间戳可以是0,下一个应该是从那时起的秒数,依此类推。 为此,您可以将其转换为datetime以在Python中使用:

import datetime
def conv_time(time):
   return(datetime.datetime.strptime(time , '%Y-%m-%d %H:%M:%S'))

这样,您可以将时间列表转换为日期时间:

dates = ['2018-01-25 13:04:59', '2018-01-26 06:16:23',
         '2018-01-26 11:03:12', '2018-01-26 14:10:33']
dates = [conv_time(i) for i in dates]

并计算自第一个时间戳以来的秒数:

dates = [conv_time(i) for i in dates]
start = dates[0]
seconds = [(i - start).total_seconds() for i in dates]

导致:

[0.0, 61884.0, 79093.0, 90334.0]

您可以在轴上绘图。 (或者,您也可以使用几分钟或几小时。

欢呼声,塞巴斯蒂安

暂无
暂无

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

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