首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用带Bokeh image_rgba元素的日期时间轴?

如何使用带Bokeh image_rgba元素的日期时间轴?
EN

Stack Overflow用户
提问于 2015-10-09 11:30:17
回答 1查看 870关注 0票数 5

在这种情况下,我希望生成一个带有日期时间轴的Bokeh image_rgba图。当我尝试这样做时,使用类似于以下代码的代码:

代码语言:javascript
复制
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)

我得到以下错误:

代码语言:javascript
复制
TypeError: Timedelta('2139 days 00:00:00') is not JSON serializable

plotmatrix变量是一个平方的numpy矩阵,其数据类型为uint32,根据下面的示例填充了RGBA值。

rgba.html

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

EN

回答 1

Stack Overflow用户

发布于 2018-07-05 21:43:26

TimeDelta的非序列化性最近在 中得到了解决。截至2018年7月,这一修补程序尚未正式发布。这将是即将在Q3 2018年发布的1.0版的一部分。

或者,如果您希望手动将timedelta值直接转换为Bokeh始终能够理解的格式,下面的函数(即上面PR所做的所有功能)将能够工作:

代码语言:javascript
复制
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'))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33037185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档