[英]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.