gpt4 book ai didi

python - 如何将日期时间轴与 Bokeh image_rgba 元素一起使用?

转载 作者:太空狗 更新时间:2023-10-30 01:37:47 26 4
gpt4 key购买 nike

我有一种情况,我想生成一个带有日期时间轴的 Bokeh image_rgba 图。当我尝试使用类似于以下代码的内容时:

p1 = figure(x_axis_type = 'datetime', y_axis_type = 'datetime',
x_range = [min(dates),max(dates)],
y_range = [min(dates),max(dates)],
x_axis_label = 'Purchase Date', y_axis_label = 'Sell Date',
plot_width = 500, plot_height = 500)
p1.image_rgba(image = [plotmatrix], x = [min(dates)], y = [min(dates)], dh = [max(dates)-min(dates)], dw = [max(dates)-min(dates)])
p1.grid.grid_line_color = None
show(p1)

我收到以下错误:

TypeError: Timedelta('2139 days 00:00:00') is not JSON serializable

plotmatrix 变量是一个数据类型为 uint32 的 numpy 方阵,根据

中的示例使用 RGBA 值打包

http://docs.bokeh.org/en/latest/docs/gallery/image_rgba.html .

解决此问题的推荐方法是什么。我意识到我的一个选择是将所有时间转换为 unixtime,根据秒绘制数据,然后找到某种轴标签格式化程序来生成正确的时间信息。但是这个解决方案对我来说似乎有点太老套了。

最佳答案

最近在 PR #8027 Handle Pandas PeriodIndex and Timedelta properly 中解决了 TimeDelta 的不可序列化问题.截至 2018 年 7 月,此修复程序尚未包含在任何官方版本中。它将成为 2018 年第 3 季度即将发布的 1.0 版本的一部分。

或者,如果您想直接将 timedelta 值手动转换为 Bokeh 始终可以理解的格式,则以下函数(上面的 PR 所做的全部)将起作用:

def convert_timedelta_type(obj):
''' Convert any recognized timedelta value to floating point absolute milliseconds.

Arg:
obj (object) : the object to convert
Returns:
float : milliseconds

'''
if isinstance(obj, dt.timedelta):
return obj.total_seconds() * 1000.
elif isinstance(obj, np.timedelta64):
return (obj / np.timedelta64(1, 'ms'))

关于python - 如何将日期时间轴与 Bokeh image_rgba 元素一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33037185/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com